Предположим, что в Apache Воздушный поток есть рабочий процесс, включающий несколько задач.
- Необходимо интегрировать одного оператора ( давайте назовем это DOMAIN_1) результат / информация с внешним доменом (например, DOMAIN_2).
- Это может быть выполнено с помощью события Doman, опубликованного в Message Broker. Внешний домен (DOMAIN_2), о котором я упоминал, может подписаться на вышеуказанное сообщение и сделать его бизнес-логи c.
Одна из целей в такой распределенной архитектуре - стремиться иметь автономные модули:
- поэтому асинхронное сообщение представляется наиболее разумным, выгодным
- , позволяющим временно отключить один модуль или развернуть его независимо
- , с другой стороны, команда должна позаботиться HA (высокая доступность) Message Broker
Альтернативное решение может быть:
- запуск внешнего домена через конечную точку REST - но, на мой взгляд, это выглядит как временная связь.
- это влияет на автономность модулей, вы не можете планировать выпуск DOMAIN_2, пока есть большие объемы c при производстве
- это временная связь
- что если DOMAIN_1 выполнил какую-то работу, но не может интегрироваться с DOMAIN_2 - кто позаботится и попытается повторить неудачную конечную точку DOMAIN_2 Int запрос.
Могут существовать некоторые другие архитектурные решения, например, сохранять состояние DOMAIN_1 в базе данных, а затем иметь некоторую запланированную службу java в DOMAIN_2, которая пытается обрабатывать бизнес-логи c на основе сохраненной выше информации.
Есть ли какой-либо шаблон, доступный в Apache Воздушный поток, который решает такой случай?
Возможно, DOMAIN_2 должен запускаться всегда через REST как отдельный оператор с некоторой повторной политикой. В Apache есть GUI Воздушный поток, и пользователи могут фильтровать фильтры и пытаться время от времени повторять неудачные задачи вручную.
- Минусы: кажется, что возникает соединение
Apache Поток воздуха масштабируемый, управляемый брокером сообщений и механизмом распределенных задач (Celery). Может быть, бессмысленно вводить дополнительные издержки на поддержку RabbitMQ только для интеграции с другими доменами?
- хотя бы такое решение кажется паршиво связанным
- Даже асинхронным коммуникация не гарантирует, что сообщение будет доставлено и правильно обработано DOMAIN_2
- ровно один раз при доставке / хотя бы один раз при доставке - что для достижения?