Skip to content

Latest commit

 

History

History
215 lines (215 loc) · 10.1 KB

messaging-core.md

File metadata and controls

215 lines (215 loc) · 10.1 KB

World messaging-core

The messaging-core world includes the basic imports and exports the incoming-handler, enabling the component to handle incoming messages without request/reply capabilities.

Import interface wasi:messaging/[email protected]


Types

type metadata

metadata

A type alias for list> to represent metadata attached to a message

type topic

string

A type alias for string to represent a message topic

resource client

A connection to a message-exchange service (e.g., buffer, broker, etc.).

variant error

Errors that can occur when using the messaging interface.

Variant Cases
  • timeout

    The request or operation timed out.

  • connection: string

    An error occurred with the connection. Includes a message for additional context

  • permission-denied: string

    A permission error occurred. Includes a message for additional context

  • other: string

    A catch all for other types of errors

resource message

A message with a binary payload and additional information

Functions

[static]client.connect: func

Params
  • name: string
Return values

[method]client.disconnect: func

Params
Return values

[constructor]message: func

Params
  • data: list<u8>
Return values

[method]message.topic: func

The topic/subject/channel this message was received on, if any

Params
Return values

[method]message.content-type: func

An optional content-type describing the format of the data in the message. This is sometimes described as the "format" type

Params
Return values
  • option<string>

[method]message.set-content-type: func

Set the content-type describing the format of the data in the message. This is sometimes described as the "format" type

Params
  • self: borrow<message>
  • content-type: string

[method]message.data: func

An opaque blob of data

Params
Return values
  • list<u8>

[method]message.set-data: func

Set the opaque blob of data for this message, discarding the old value

Params
  • self: borrow<message>
  • data: list<u8>

[method]message.metadata: func

Optional metadata (also called headers or attributes in some systems) attached to the message. This metadata is simply decoration and should not be interpreted by a host to ensure portability across different implementors (e.g., Kafka -> NATS, etc.).

Params
Return values

[method]message.add-metadata: func

Add a new key-value pair to the metadata, overwriting any existing value for the same key

Params
  • self: borrow<message>
  • key: string
  • value: string

[method]message.set-metadata: func

Set the metadata

Params

[method]message.remove-metadata: func

Remove a key-value pair from the metadata

Params
  • self: borrow<message>
  • key: string

Import interface wasi:messaging/[email protected]

The producer interface is used to send messages to a channel/topic.


Types

type client

client

#### `type message` [`message`](#message)

#### `type error` [`error`](#error)

#### `type topic` [`topic`](#topic)

----

Functions

send: func

Sends the message using the given client.

Params
Return values

Export interface wasi:messaging/[email protected]


Types

type message

message

#### `type error` [`error`](#error)

#### `type topic` [`topic`](#topic)

----

Functions

handle: func

Whenever this guest receives a message in one of the subscribed topics, the message is sent to this handler. The guest is responsible for matching on the topic and handling the message accordingly. Implementors (such as hosts) calling this interface should make their own decisions on how to handle errors returned from this function.

Params
Return values