Я пытаюсь найти способ обработки сообщений в том порядке, в котором они были отправлены от отправителя, поскольку NServiceBus не гарантирует, что сообщения будут обрабатываться в определенном порядке.Как обрабатывать порядок сообщений в nservicebus?
Отправитель - это система заказов, которая публикует команды createOrder и reviseOrder. Отправитель позволяет пользователю отправлять несколько ревизий в один и тот же порядок, поэтому одновременно могут быть ревизии 4 и версии 3 в очереди. Каждая ревизия имеет номер версии и код причины, связанный с ней, который управляет некоторой бизнес-логикой, поэтому мы не можем игнорировать какие-либо изменения или, по крайней мере, ее часть.
Несколько идей, которые я имел, перечислены ниже -
магазин номер версии с целевой записи. Отправитель отправляет свой номер ревизии в каждое сообщение о ревизии. Обработчик сравнивает номера версий отправителя и получателя, если они соответствуют записи, обновляется иначе сообщение помещается в конец очереди. При таком подходе, если сообщение ревизии 2 выходит из строя и переходит в очередь ошибок, версия 3 никогда не будет обработана.
Отправитель отправляет историю всех кодов причин для всех изменений для каждого сообщения о ревизии. Поэтому, если сообщение ревизии 2 выходит из строя, сообщение версии 3 будет содержать все коды причин. Эти коды причин будут записаны в месте назначения, но любая бизнес-логика, связанная с кодом предыдущей версии, может не произойти.
Как мы проектируем для этого сценария?
Также есть идеи о том, как обрабатывать неудавшиеся сообщения о пересмотре?
Некоторые рекомендации действительно оценены.
Спасибо.
Спасибо Люк. – maddog
На ваш взгляд, насколько важно, чтобы NServiceBus обеспечивал поддержку на уровне базового уровня для этого сценария? –
@UdiDahan в сценарии, который у нас был, я думаю, что мы допустили ошибку, чтобы требовать порядка. Если бы мне пришлось это сделать снова, я бы сделал нечто похожее на то, что я описал выше. Я думаю, что лучшим вариантом является поддержка любого порядка в обработчиках, а не обеспечение порядка в рамках, но это только мое мнение. –