EIP
Content may include inaccuracies, outdated information, or technical errors. Users are advised to cross-check critical information before implementation.
The notation describes messaging between applications: the endpoints that produce and consume messages, the channels that carry them, and the routers, transformers and control elements in between.

Create the model
Create a model Notification Delivery System of the type
EnterpriseIntegrationModel (EIP) and open its diagram.
The root of the model is an EnterpriseIntegrationModel. The notation has one
connection type: Flow.
Taking events in
- Create an
EndpointApplication (Order Service). - Create a
ChannelIncoming Events Topic (Kafka). - Create a
ChannelAdapterInput Adapterand turn on its Backward attribute - the adapter reads events from the topic.
Draw a Flow from the endpoint to the topic and from the topic to the adapter.
Audit and duplicates
Create a WireTap Audit Log with a DataStore Audit DB, and a
MessageFilter Deduplication Filter with a DataStore Redis Cache.
Chain them: adapter → wire tap → filter. Add a flow from the wire tap to the audit store and from the filter to the cache - the filter needs somewhere to keep the messages it has already handled.
Enrichment and routing
An order event does not carry the notification channel, so the message is
enriched before routing. Create a ContentEnricher Preference Enricher with a
DataStore User Profile DB.
Create a Router Content-Based Router and three channels: SMS Queue,
Email Queue, Push Queue. Draw a flow from the router to each channel and
name the flows SMS, Email and Push.
Delivery
All three branches are built the same way. For SMS: SMS Queue → Filter
SMS Throttler → Filter SMS Circuit Breaker → Service
SMS Sender (Twilio). Build the email and push branches the same way.
For redelivery, create a DeadLetterChannel Retry Queue and draw a flow into
it from every circuit breaker. Then create a PollingConsumer Retry Job: it
reads the queue and returns messages to the router.
The table
Open the model as Enterprise Integration Model Table. Every endpoint, channel, processor and store takes its own row. The table makes it easier to check that every branch ends in a sender and every branch has a redelivery path.