Хорошо, я относительно новичок в сервисной шине. Работаем над проектом, в котором мы используем сервисную шину Azure для постановки сообщений в очередь. Наша архитектура примерно выглядит следующим образом:
Идея состоит в том, что в нашей SourceSystem происходит множество разных вещей, что приводит к тому, что сообщения помещаются в сервисные приложения. Теперь наша ответственность - синхронизировать эти события с внешним клиентом, чтобы он знал, что мы делаем.
Теперь проблема в том, что в настоящее время мы не используем сеансы служебной шины, поэтому порядок сообщений не гарантируется. Также рассмотрите следующий сценарий:
OrderCreated OrderUpdate 1 OrderUpdate 2 OrderClosed
Что происходит сейчас, если API внешних клиентов не работает, скажем, для OrderUpdate 1 и OrderUpdate 2, мы потенциально могли бы отправлять сообщения по порядку: OrderCreated, OrderClosed, OrderUpdate 1, OrderUpdate 2.
В настоящее время мы просто повторяем сообщение несколько раз, а затем оно перемещается в очередь недоставленных сообщений для ручной повторной обработки.
Какие шаги мы должны предпринять, чтобы лучше гарантировать порядок сообщений? Я чувствую, что в рамках заказа порядок сообщений должен быть гарантирован.
Должны ли мы заставить исходную систему помещать все сообщения для заказа в сеанс служебной шины? Но как мы можем справиться с этим с несколькими темами? И что нам делать, если сообщение 1 из сеанса оказывается в мертвом письме?
Здесь есть много соображений, следует ли использовать одну тему, чтобы было легче управлять сеансами? Но это открывает другие проблемы с разными структурами сообщений в одной теме?
Я хотел бы услышать ваше мнение по этому поводу