Skip to content
Art2link ESB v2.02 LTS HomeDocumentationBlogContact
Core concepts/Ports/Receive port
Concept

Receive port

Receive ports are how messages enter Art2link ESB. Bound to a transport adapter, they accept incoming traffic and publish it to the bus through optional variable, pipeline, and map stages.

01 PORT TYPE · RECEIVE Receive port The entry point for messages into Art2link ESB DIRECTION ↓ Inbound MODES One-way · Two-way ADAPTER ✓ Required MESSAGE TYPE ✓ Publish

From the bus, the message continues its journey: a send port, a loopback, or the response side of a two-way receive port picks it up.

Every receive port is configured as either one-way or two-way. One-way is fire-and-forget, the adapter accepts the message and disconnects. Two-way keeps the caller's connection open and waits for a matching response message to come back through.

Every message published to the bus must carry a Message Type. On the inbound side of a receive port the Message Type is resolved in two places, a pipeline component can classify the message at runtime, and if no classification happens the port’s optional Publish Message Type Fallback takes effect. If neither resolves a Message Type, the port raises an error. Pipeline classification to a Message Type that does not exist in the application also errors.

Once the Message Type is known, the inbound map step runs, or doesn’t. The Map Assignment setting takes three values: None (no transformation), Typed (a table of maps keyed on source Message Type; the row whose source matches the resolved Message Type is applied, a miss is a no-op), and Universal (a single map applied to every message regardless of source). Typed table rows are unique by source Message Type, the UI enforces that.

None Adapter MT: X Bus No transform Published MT = resolved MT Typed Adapter MT: B SOURCE MT → MAP A B C Map table MT: B′ Bus Picked by source MT Miss → no map applied Universal Adapter MT: any Map MT: Y Bus One map, any source Published MT = map target
Aligned with the BizTalk model. The Typed table mirrors the BizTalk receive port’s inbound maps grid, multiple maps on a single port, each keyed on a different source Message Type, dispatched at runtime by matching the incoming Message Type to a row.
ONE-WAY MODE

The receive port's job ends the moment the message reaches the bus. There is no response back to the caller, the adapter acknowledges receipt and disconnects. This is the model used by triggers (e.g. the scheduler adapter), file pickups, queue dequeues, and any flow where the upstream system does not expect a synchronous reply.

PORT-LEVEL OPTIONALPublish MTFallbackUsed if no MT assignedSee Message types → applies to External system that initiates the request Caller REQUIREDAdapterWire-level protocolSee Adapters →{ x }OPTIONALVariablesOPENCapture contextSee Variables →OPTIONALPipelineINBOUNDPre-processSee Pipelines →OPTIONALMapINBOUNDNone / Typed / UniversalSee Maps →{ x }OPTIONALVariablesCLOSECapture for routingSee Variables → Internal message bus - request published here Bus
1
Adapter receives the message

The adapter is the only stage that is always present. It handles the wire-level conversation with the caller, accepting an HTTP request, opening a file, polling a schedule, dequeueing from a broker. Once the adapter has the message in hand, it hands control to the rest of the receive port.

2
Open Variables (optional)

An optional set of variable assignments runs before the pipeline. Capture values from the incoming message or its context, headers, query parameters, file name, sender identity, and store them as variables that downstream stages, routing rules, send ports, and tracking can reference later.

3
Inbound pipeline (optional)

A sequence of pipeline components that pre-process the message, typical examples are decompression, character-set normalization, signature verification, or splitting a multi-record file into individual messages.

4
Inbound map (optional)

Transforms the message from the source shape into the canonical shape used by the rest of the application. The Map step’s Map Assignment setting has three modes, None (skipped), Typed (a table of maps keyed on source Message Type; the row that matches the resolved Message Type is applied), or Universal (one map applied to every message regardless of source). When a map runs, its target Message Type carries forward as what gets published. See the Publish Message Type Fallback and map configuration section above. Maps are configuration-only and take effect on save.

5
Close Variables (optional)

A second optional variable-assignment stage runs after the map. This is the place to capture values from the transformed message, values that are often used by routing logic, by send ports later in the flow, or by activity tracking.

Result. The message is now published to the bus. The receive port's work is done; downstream subscribers, send ports, loopbacks, or the return side of a two-way receive port, pick it up from there.
TWO-WAY MODE

A two-way receive port runs the entire one-way flow above to publish the request to the bus, and then keeps the caller's connection open while it waits for a response message to appear on the bus. The matching is driven by the port's Response Subscription Expression, set on the Subscription tab at the top of the editor’s Response group, a Boolean expression evaluated against every message published to the bus. The first message that satisfies it is picked up as the response and delivered back to the caller through the mirror image of the inbound flow on this same port.

Note the order on the way out: map first, then pipeline, the inverse of the inbound order. The response is reshaped into the caller's expected format before the pipeline applies any transport-level post-processing such as signing, compression, or framing.

Map configuration on the response side mirrors the request side, None, Typed, or Universal. The response message comes off the bus already typed, so there is no Publish Message Type Fallback on this side: the resolved Message Type is whatever the bus message carries when the Response Subscription Expression picks it up.

None Bus MT: X Adapter No transform MT carries through Typed Bus MT: B SOURCE MT → MAP A B C Map table MT: B′ Adapter Picked by source MT Miss → no map applied Universal Bus MT: X Map MT: Y Adapter One map, any source Sent shape = map target PORT-LEVEL SETTINGS OPTIONALPublish MTFallbackUsed if no MT assignedSee Message types → REQUIREDResponse Sub ExprPORT-LEVELPicks the response applies to Mappicks from bus External system - sends the request and receives the response on the still-open connection Caller EXTERNAL REQUEST →← RESPONSE REQUIREDAdapterREQUESTAccept the requestSee Adapters →{ x }OPTIONALVariablesOPENCapture contextSee Variables →OPTIONALPipelineINBOUNDPre-processSee Pipelines →OPTIONALMapINBOUNDNone / Typed / UniversalSee Maps →{ x }OPTIONALVariablesCLOSEPre-publishSee Variables → REQUIREDAdapterRESPONSEDeliver responseSee Adapters →{ x }OPTIONALVariablesCLOSEPre-deliverySee Variables →OPTIONALPipelineOUTBOUNDPost-processSee Pipelines →OPTIONALMapOUTBOUNDNone / Typed / UniversalSee Maps →{ x }OPTIONALVariablesOPENFrom busSee Variables → Internal message bus - request published here; response picked up via the Response Subscription Expression Bus REFERENCE
1
Open Variables (optional)

Once the port's Response Subscription Expression matches a message on the bus, that message is picked up as the response. Optional variable assignments run immediately, before the outbound map. Inject correlation values, derived headers, or any context-specific fields the response shape will need.

2
Outbound map (optional)

Transforms the response message from the canonical shape on the bus into the shape the original caller is expecting. Map configuration mirrors the request side, None, Typed (dispatched by source Message Type), or Universal (one map for any source). The response comes off the bus already typed, so there is no Publish Message Type Fallback on this side.

3
Outbound pipeline (optional)

Applies post-processing on the way out, typical examples are compression, encryption, signing, or framing.

4
Close Variables (optional)

A final optional variable-assignment stage runs immediately before the response is handed back to the adapter. Useful for setting outbound headers, status codes, or tracking values.

5
Adapter delivers the response

The adapter sends the response back to the caller on the still-open connection. The two-way conversation closes.

i
Not every adapter supports two-way on a receive port. Two-way mode requires an adapter that can hold a connection open and deliver a synchronous response, for example, an HTTP listener. Adapters that are inherently fire-and-forget, schedulers, file pickups, queue dequeues, are one-way only. See Adapters for the per-adapter behaviour.

Exceptions, Tracking, and Subscriptions work the same on every port. Set the port’s Exception Message Type to re-publish failures on their own Message Type; choose one of the three Tracking levels for what each run persists; and write a subscription expression evaluated against every message on the bus. A two-way receive port additionally carries a Response Subscription Expression, evaluated the same way, that identifies which message on the bus is the response to send back to the caller through the same port. The full treatment, with diagrams and the subscription token list, lives once under Options available on every port and Subscriptions and Message Types on the Ports overview.

That's the receive port

Bind a transport adapter, layer on optional variable, pipeline, and map stages, and you have an entry point into Art2link ESB, one-way fire-and-forget, or two-way with a synchronous response held open for the caller. Next: Send port.