Messaging Endpoints

Competing Consumers
Create multiple Competing Consumers on a single channel so that the consumers can process multiple messages concurrently.

Durable Subscriber
Use a Durable Subscriber to make the messaging system save messages published while the subscriber is disconnected.

Event-Driven Consumer
The application should use an Event-Driven Consumer, one that is automatically handed messages as they’re delivered on the channel.
Idempotent Receiver
Design a receiver to be an Idempotent Receiver--one that can safely receive the same message multiple times.
Message Dispatcher
Create a Message Dispatcher on a channel that will consume messages from a channel and distribute them to performers.
Message Endpoint
Connect an application to a messaging channel using a Message Endpoint, a client of the messaging system that the application can then use to send or receive messages.
Messaging Gateway
Use a Messaging Gateway, a class than wraps messaging-specific method calls and exposes domain-specific methods to the application.
Messaging Mapper
Create a separate Messaging Mapper that contains the mapping logic between the messaging infrastructure and the domain objects. Neither the objects nor the infrastructure have knowledge of the Messaging Mapper's existence
Polling Consumer
The aplication should use a Polling Consumer, one that explicitly makes a call when it wants to receive a message.
Selective Consumer
Make the consumer a Selective Consumer, one that filteres the messages delivered by its channel so that it only receives the ones that match its criteria.
Service Activator
Design a Service Activator that connects the messages on the channel to the service being accessed.
Transactional Client
Use a Transactional Client—make the client’s session with the messaging system transactional so that the client can specify transaction boundaries.