Моя команда рассматривает вопрос о том, можем ли мы использовать общественный транспорт в качестве основного решения для саг в RabbitMq (против NServiceBus). Я признаю, что наш опыт использования таких решений, как masstransit и nserviceBus, минимален, и мы начали внедрять обмен сообщениями в нашей системе. Поэтому я извиняюсь, если мой вопрос будет простым или даже глупым. Однако, просматривая документацию по общественному транспорту, я заметил, что не уверен, что это возможно для решения одного из наших случаев.
Случай выглядит так: Один из наших компонентов выдаст до 100 сообщений, которые будут быть «отправлен» в очередь. Эти сообщения являются результатом одной операции в системе. Все сообщения будут иметь один и тот же коррелированный идентификатор и наш внутренний идентификатор публикации (тоже одно и то же).
1) можно определить сагу одного экземпляра (по коррелированному идентификатору), которая будет ждать, пока не получит все сообщения из очереди, а затем обработать их как один пакет?
2) в противном случае, есть ли решение для обеспечения обработки всех отправленных сообщений? (Пакет согласованности?) Я предполагаю, что коррелированный Id будет служить способом для создания существующего экземпляра саги (singleton). В идеальном случае я хотел бы завершить экземпляр саги, когда система обработает каждое сообщение, принадлежащее одной группе (одной публикации)
Я тоже смотрю на CompositeEvent, но не уверен, что Я мог бы использовать его, чтобы «гарантировать», что каждое сообщение было обработано, и затем я позволил бы завершить сагу для указанного c коррелированного идентификатора.
Можете ли вы объяснить, как это могло быть достигнуто? И на какой механизм мне следует обратить внимание, чтобы связать id большого количества сообщений с одинаковым идентификатором с одной сагой, а затем завершить, если будут использованы все сообщения MSG?
Заранее благодарен за любой ответ