Integration Patterns Reference
Intent, fit, trade-offs, and relationships for messaging and application integration.
Updated 2026-07-22
Message Channel
Connect applications through a logical path that carries messages.
| Aspect | Guidance |
|---|---|
| Use when | Senders and receivers should communicate asynchronously without direct location coupling. |
| Trade-offs | Delivery, ordering, retention, and ownership must be defined. |
| Related | Message Endpoint, Pipes and Filters |
Point-to-Point Channel
Deliver each message to one eligible consumer.
| Aspect | Guidance |
|---|---|
| Use when | Work should be distributed without duplicating each task. |
| Trade-offs | Consumers compete and processing order may differ from send order. |
| Related | Competing Consumers, Publish-Subscribe Channel |
Publish-Subscribe Channel
Deliver each publication to every interested subscriber.
| Aspect | Guidance |
|---|---|
| Use when | Independent consumers react to the same event. |
| Trade-offs | Slow, unavailable, and late subscribers need explicit retention semantics. |
| Related | Point-to-Point Channel, Event-Driven Consumer |
Dead Letter Channel
Store messages that cannot be delivered or processed for diagnosis and recovery.
| Aspect | Guidance |
|---|---|
| Use when | Failures must not block a channel or disappear silently. |
| Trade-offs | Without alerting, retention, and replay procedures it becomes a message graveyard. |
| Related | Retry, Invalid Message Channel |
Message Envelope
Wrap a business payload with transport and processing metadata.
| Aspect | Guidance |
|---|---|
| Use when | Routing, versioning, identity, or tracing must travel with a payload. |
| Trade-offs | Envelope ownership and version compatibility must be standardized. |
| Related | Correlation Identifier, Message Translator |
Correlation Identifier
Identify messages that belong to the same request or conversation.
| Aspect | Guidance |
|---|---|
| Use when | Replies, fragments, or events must be matched across asynchronous boundaries. |
| Trade-offs | Every participant must preserve the identifier and choose its lifecycle. |
| Related | Aggregator, Request-Reply |
Content-Based Router
Select a destination by evaluating message data.
| Aspect | Guidance |
|---|---|
| Use when | Different message kinds or values require different processing paths. |
| Trade-offs | Central routing rules can become coupled to every message schema. |
| Related | Message Filter, Recipient List |
Message Filter
Remove messages that do not satisfy a predicate.
| Aspect | Guidance |
|---|---|
| Use when | A downstream channel should receive only relevant messages. |
| Trade-offs | Discard behavior must be observable when filtered data matters. |
| Related | Content-Based Router, Invalid Message Channel |
Recipient List
Send one message to a dynamically computed set of recipients.
| Aspect | Guidance |
|---|---|
| Use when | Destinations depend on message content or runtime configuration. |
| Trade-offs | Partial delivery, duplicate effects, and result collection require policy. |
| Related | Publish-Subscribe Channel, Aggregator |
Splitter
Divide a compound message into independently processable messages.
| Aspect | Guidance |
|---|---|
| Use when | Parts can be processed, routed, or retried separately. |
| Trade-offs | Sequence, correlation, and completion metadata must survive the split. |
| Related | Aggregator, Resequencer |
Aggregator
Combine a related set of messages into one result.
| Aspect | Guidance |
|---|---|
| Use when | Fragments or parallel results must be reassembled. |
| Trade-offs | Completeness, timeouts, duplicates, ordering, and persistent state are difficult. |
| Related | Splitter, Correlation Identifier |
Resequencer
Buffer related messages and release them in a defined order.
| Aspect | Guidance |
|---|---|
| Use when | Transport or parallel processing can reorder messages whose sequence matters. |
| Trade-offs | Missing messages force timeout and memory decisions. |
| Related | Aggregator, Splitter |
Routing Slip
Attach a dynamic list of processing destinations to a message.
| Aspect | Guidance |
|---|---|
| Use when | Each message may need a different sequence of steps. |
| Trade-offs | Itineraries expose topology and make centralized policy harder. |
| Related | Process Manager, Pipes and Filters |
Message Translator
Convert a message from one data format or vocabulary into another.
| Aspect | Guidance |
|---|---|
| Use when | Connected systems use incompatible contracts. |
| Trade-offs | Semantic loss and version combinations accumulate at boundaries. |
| Related | Canonical Data Model, Adapter |
Canonical Data Model
Use one shared integration vocabulary between application-specific translators.
| Aspect | Guidance |
|---|---|
| Use when | Many applications would otherwise require pairwise transformations. |
| Trade-offs | The canonical model can become huge, political, and slow to evolve. |
| Related | Message Translator, Anti-corruption Layer |
Content Enricher
Add missing information to a message from another source.
| Aspect | Guidance |
|---|---|
| Use when | A downstream step requires data the sender should not provide. |
| Trade-offs | Enrichment adds latency and introduces dependency failure and staleness. |
| Related | Content Filter, Claim Check |
Claim Check
Store a large or sensitive payload and pass a reference through the channel.
| Aspect | Guidance |
|---|---|
| Use when | Transport limits, repeated routing, or security favor an external payload store. |
| Trade-offs | Claims expire, stores fail, and cleanup must align with message lifetime. |
| Related | Content Enricher, Message Store |
Polling Consumer
Let a receiver request messages when it is ready.
| Aspect | Guidance |
|---|---|
| Use when | The consumer controls pace or integrates with a synchronous loop. |
| Trade-offs | Polling interval trades latency against empty requests. |
| Related | Event-Driven Consumer, Competing Consumers |
Event-Driven Consumer
Invoke message handling when a message arrives.
| Aspect | Guidance |
|---|---|
| Use when | Low latency and push-style APIs are preferred. |
| Trade-offs | Concurrency and backpressure move into callbacks or the runtime. |
| Related | Polling Consumer, Publish-Subscribe Channel |
Competing Consumers
Attach multiple workers to one point-to-point channel.
| Aspect | Guidance |
|---|---|
| Use when | Message processing needs horizontal scale and failover. |
| Trade-offs | Ordering, shared resources, and uneven work complicate scaling. |
| Related | Point-to-Point Channel, Idempotent Receiver |
Idempotent Receiver
Process duplicate messages without producing duplicate logical effects.
| Aspect | Guidance |
|---|---|
| Use when | At-least-once delivery or retries are possible. |
| Trade-offs | Message identity and deduplication retention require durable state. |
| Related | Competing Consumers, Dead Letter Channel |
Pipes and Filters
Compose independent transformations as filters connected by channels.
| Aspect | Guidance |
|---|---|
| Use when | Processing can be decomposed into reusable, reorderable stages. |
| Trade-offs | Serialization, observability, and end-to-end error handling span many stages. |
| Related | Routing Slip, Message Channel |