Skip to content
Art2link ESB HomeDocumentationBlogContact
Updated May 5, 2026
Best practices/Components transform, ports deliver

Components transform, ports deliver

A pipeline component exists to shape and publish messages. The moment it makes the delivering call (the insert, the POST, the file write that completes the integration) it has stepped into the send port’s job and undone the bus.

This is normalize onto the bus stated as a boundary on the component itself. A component runs inside the receive context, so a delivering call inside it holds the inbound transaction open while it waits on a slow endpoint, blocks throughput, and can let a downstream failure poison the receive. It also welds the feed to one destination and hides the work from tracking.

The component’s contract is narrow on purpose: parse, validate, enrich, normalize, publish. Stop there. Whatever needs to happen to the outside world is expressed as a published canonical message and a send port that subscribes, which is also what makes the flow observable, resilient and replayable.

pipeline component transform& publish deliver call forbidden publish BUS Send portowns delivery DB / API
The line. A component may read reference data to enrich a message; it may not perform the delivery that finishes the integration. If it is calling the system of record to commit a result, move that to a send port.