#
Patterns from Enterprise Integration Patterns by Gregor Hohpe and Bobby Woolf
Below is a bullet list of the 65 patterns from Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions by Gregor Hohpe and Bobby Woolf (2003). Each pattern includes its name and a brief description of its purpose, focusing on solutions for enterprise application integration using messaging.
- Aggregator: Combines multiple related messages into a single message based on a correlation strategy, enabling processing of aggregated data.
- Canonical Data Model: Defines a standard data format for messages to ensure consistency across different systems, reducing transformation complexity.
- Channel Adapter: Connects an application to a messaging system by adapting its API to the messaging infrastructure, enabling seamless integration.
- Channel Purger: Removes all messages from a channel for testing or cleanup, ensuring a clean slate for message processing.
- Claim Check: Stores large message payloads in a persistent store and sends a reference (claim check) in the message, reducing message size.
- Command Message: Represents a command to invoke a specific operation on a receiver, enabling remote procedure calls via messaging.
- Competing Consumers: Allows multiple consumers to process messages from a single queue concurrently, improving throughput and scalability.
- Content Enricher: Adds missing data to a message by retrieving it from an external source, ensuring the message contains all required information.
- Content Filter: Removes unnecessary or sensitive data from a message, reducing its size and simplifying downstream processing.
- Content-Based Router: Routes a message to different youre a destination based on its content, enabling dynamic message routing.
- Control Bus: Uses a dedicated channel to send control messages that manage or monitor the messaging system, ensuring operational control.
- Correlation Identifier: Assigns a unique ID to a message to track related messages across multiple channels or systems, enabling message correlation.
- Databank Channel: Stores messages in a database-like channel for later retrieval, supporting asynchronous or delayed processing.
- Dead Letter Channel: Sends undeliverable or unprocessed messages to a special channel for error handling or manual inspection.
- Document Message: Represents a document (data) without specific processing instructions, allowing flexible handling by the receiver.
- Durable Subscriber: Ensures a subscriber receives all messages, even those sent while disconnected, by storing them until delivery.
- Dynamic Router: Routes messages to destinations based on dynamically updated routing rules, providing flexible routing logic.
- Envelope Wrapper: Wraps a message in an envelope with additional metadata (e.g., headers), enabling standardized message handling.
- Event Message: Notifies subscribers of an event without expecting a response, enabling decoupled event-driven communication.
- Event-Driven Consumer: Triggers message processing when a message arrives, eliminating the need for polling and improving responsiveness.
- File Transfer: Moves files between systems without using messaging channels, providing a simple integration method for file-based systems.
- Filter: Discards messages that don’t meet specific criteria, preventing unnecessary processing by downstream components.
- Format Indicator: Includes metadata to indicate the message’s data format, enabling correct interpretation by the receiver.
- Guaranteed Delivery: Ensures messages are delivered despite failures by using persistent storage and retry mechanisms.
- Idempotent Receiver: Ignores duplicate messages to prevent reprocessing, ensuring safe message handling in unreliable systems.
- Message: Encapsulates data and metadata for transmission between systems, enabling standardized communication.
- Message Bus: Transports messages between multiple components or applications, acting as a central communication backbone.
- Message Channel: Connects a sender and receiver for message exchange, providing a conduit for asynchronous communication.
- Message Dispatcher: Routes messages from a single channel to multiple consumers based on workload, enabling load balancing.
- Message Endpoint: Connects an application to a messaging system as a sender or receiver, facilitating integration.
- Message Expiration: Sets a time limit for a message’s validity, discarding it if undelivered or unprocessed in time.
- Message Filter: Filters messages based on criteria, allowing only relevant messages to proceed to the receiver.
- Message History: Attaches a history of processing steps to a message, enabling tracking and debugging of message flow.
- Message Sequence: Ensures messages are processed in a specific order by using sequence identifiers, maintaining logical order.
- Message Store: Persists messages in a database for auditing, recovery, or delayed processing, ensuring reliability.
- Message Translator: Converts a message’s format or structure to match the receiver’s requirements, enabling interoperability.
- Messaging Bridge: Connects two different messaging systems, allowing messages to flow between disparate platforms.
- Messaging Gateway: Encapsulates messaging system access within an application, simplifying interaction with the messaging infrastructure.
- Normaliser: Transforms messages of different formats into a common format, simplifying downstream processing.
- Pipes and Filters: Breaks down message processing into a series of independent filter components connected by pipes, enabling modular processing.
- Point-to-Point Channel: Delivers a message to a single receiver, ensuring direct and exclusive communication.
- Polling Consumer: Periodically checks a channel for new messages, enabling message retrieval in systems without event-driven support.
- Process Manager: Orchestrates a multi-step process by routing messages between components, managing complex workflows.
- Publish-Subscribe Channel: Broadcasts a message to all subscribers of a channel, enabling one-to-many communication.
- Recipient List: Sends a message to a dynamically determined list of recipients, enabling flexible multicast distribution.
- Request-Reply: Sends a request message and expects a reply, enabling synchronous-like communication over asynchronous messaging.
- Resequencer: Reorders messages that arrive out of sequence, ensuring they are processed in the correct order.
- Return Address: Specifies the reply channel in a request message, directing where the response should be sent.
- Routing Slip: Attaches a predefined list of processing steps to a message, guiding it through a specific sequence of components.
- Scatter-Gather: Sends a message to multiple recipients and aggregates their responses into a single result, enabling parallel processing.
- Selective Consumer: Filters messages to process only those meeting specific criteria, reducing unnecessary processing.
- Service Activator: Triggers a service or application in response to a message, connecting messaging to business logic.
- Shared Database: Enables integration by having multiple applications access a common database, simplifying data sharing.
- Smart Proxy: Intercepts messages to monitor or modify their flow without altering the core messaging system, enabling tracking or control.
- Splitter: Breaks a composite message into individual messages for separate processing, enabling fine-grained handling.
- Test Message: Sends a test message through the system to verify functionality or diagnose issues, ensuring system reliability.
- Transactional Client: Ensures message sending or receiving is part of a transaction, guaranteeing atomicity and consistency.
- Wire Tap: Copies messages to a secondary channel for monitoring or auditing without affecting the primary flow, enabling observability.