У меня есть приложение NServiceBus, для которого данное сообщение не может быть обработано из-за отсутствия какого-либо внешнего события. Поскольку это другое событие не является событием NSB, я не могу правильно реализовать саги.
Однако вместо того, чтобы просто ставить сообщение в очередь (что вызовет цикл, пока не произойдет это внешнее событие), я обертываю сообщение в другое сообщение (DelayMessage) и вместо этого ставлю его в очередь. DelayMessage забирается другой службой и помещается в базу данных до истечения интервала повторных попыток. В этот момент служба задержки повторно помещает сообщение в исходную очередь, поэтому можно предпринять еще одну попытку.
Однако, это может происходить несколько раз, если это внешнее событие все еще не произошло, и в случае, когда это даже никогда не происходит, я хочу ограничить количество циклов, совершаемых сообщением. Это означает, что DelayMessage имеет свойство MaxRetries, но оно теряется, когда служба задержки ставит в очередь исходное сообщение для повторной попытки.
Какие еще опции мне не хватает? Я рад признать, что есть совершенно иное решение этой проблемы.