Одно важное решение, которое необходимо принять при разработке корпоративной шины сообщений, заключается в том, должна ли (и каким образом) шина сообщений поддерживать неявное упорядочение сообщений. Под неявным порядком я подразумеваю возможность доставлять сообщения в том же порядке, в котором они были отправлены.
Есть несколько вариантов:
- Не поддерживает неявный порядок сообщений . Доставка сообщений не гарантируется в том же порядке, в котором они были отправлены. Любой бизнес-процесс, требующий упорядочения сообщений, должен обеспечивать явный порядок в каждом сообщении. Этот параметр упрощает архитектуру шины сообщений, обеспечивает лучшую масштабируемость и восстановление, а также заставляет приложения принимать явный порядок сообщений.
- Наличие дополнительного уровня в шине сообщений (над транспортным уровнем), который обеспечивает упорядочение сообщений только для тех бизнес-процессов, которым это требуется. Это делает транспортный уровень простым и масштабируемым, но также дает преимущество порядка сообщений, где это уместно. Это похоже на дизайн FIX (который обеспечивает упорядочение) и FIXT (который не обеспечивает упорядочение).
- Построение неявного порядка непосредственно в транспортном уровне автобуса. Это устраняет необходимость в отдельном уровне упорядочения, но препятствует масштабируемости и сценариям восстановления.
Как разработчик шины сообщений или разработчик, который может использовать шину сообщений, какой вариант вы предпочитаете и почему?