Messaging

Message Envelopes

The server processes data by wrapping it in a message envelope, which is routed through one or more integration flows. In addition to the data payload, it contains various types of metadata and a stash for temporary data.

Payload

The envelope keeps the current data payload in the payload property. The payload can be on various formats. It will typically be queried and transformed as the message is processed by processor pipelines.

Metadata

The following table outlines some of the more important metadata properties that can be found on the message envelope:

Name Type Description

messageId

String

The unique identifier of the message exchange. Generated by the server.

originalMessageId

String

The original identifier of the message exchange from when it was initially created. This might differ from the current ID if the message has passed through a processor that generates new exchanges, such as the split processor.

flowId

String

The ID of the flow the message is currently being processed in.

ownerId

String

The ID of the organization that owns the flow.

These metadata values can be accessed by expressions.

Exchange Properties

Exchange properties are key/value pairs of strings that will stay available on the message envelope throughout its lifecycle. They will also be copied over to any new envelopes that are created based on an existing envelope, such as the fragment envelopes created by the split processor. The exchange properties will also be copied over to the response envelope that are returned to the flow source from the last processor in the flow processing pipeline.

The exchange properties can be accessed by expressions.

The server uses exchange properties for a whole range of tracking and format info. Custom exchange properties can easily be defined in any processor config by setting the exchangeProperties config property. See the processor documentation for more details.

Stash

The message envelope provides a stash where payloads and other data can be stored for later use. Note that the stash is scoped on a single flow and will never be distributed or shared between flows.

The stash can be set using the saveToStash processor. Values in the stash can be accessed by expressions.