EIP
Текст может содержать неточности, устаревшие данные или технические ошибки. Пожалуйста, проверяйте критически важную информацию перед использованием.
Нотация описывает обмен сообщениями между приложениями: конечные точки, которые порождают и потребляют сообщения, каналы, по которым сообщения передаются, и маршрутизаторы, преобразователи и управляющие элементы между ними.

Создайте модель
Создайте модель Notification Delivery System типа EnterpriseIntegrationModel
(EIP) и откройте её диаграмму.
Корень модели — EnterpriseIntegrationModel. Тип соединения в нотации один:
Flow.
Приём событий
- Создайте
EndpointApplication (Order Service). - Создайте
ChannelIncoming Events Topic (Kafka). - Создайте
ChannelAdapterInput Adapterи включите ему атрибут Backward — адаптер читает события из топика.
Проведите Flow от конечной точки к топику и от топика к адаптеру.
Аудит и дубликаты
Создайте WireTap Audit Log с хранилищем DataStore Audit DB и
MessageFilter Deduplication Filter с хранилищем DataStore Redis Cache.
Соедините их в цепочку: адаптер → ответвление → фильтр. Добавьте поток от ответвления к хранилищу аудита и от фильтра к кэшу — фильтру нужно где-то хранить уже обработанные сообщения.
Обогащение и маршрутизация
Событие заказа не содержит способа уведомления, поэтому перед маршрутизацией
сообщение обогащают. Создайте ContentEnricher Preference Enricher с
хранилищем DataStore User Profile DB.
Создайте Router Content-Based Router и три канала: SMS Queue,
Email Queue, Push Queue. Проведите поток от маршрутизатора к каждому каналу
и назовите потоки SMS, Email и Push.
Доставка
Все три ветви устроены одинаково. Для SMS: SMS Queue → Filter
SMS Throttler → Filter SMS Circuit Breaker → Service
SMS Sender (Twilio). Постройте так же ветви для писем и push-сообщений.
Для повторной отправки создайте DeadLetterChannel Retry Queue и проведите в
него поток от каждого предохранителя. Затем создайте PollingConsumer
Retry Job: он читает очередь и возвращает сообщения маршрутизатору.
Таблица
Откройте модель как Enterprise Integration Model Table. Каждая конечная точка, канал, обработчик и хранилище займут отдельную строку. По таблице проще проверить, что каждая ветвь заканчивается отправителем и у каждой есть путь повторной отправки.