Re: Отложенное выполнение очереди в Azure Service Bus
От: Sinix  
Дата: 26.08.18 05:50
Оценка: 4 (1)
Здравствуйте, Doc, Вы писали:


Doc>message.Abandon() или пересоздание сообщения c указанием задержки не варианты, т.к. текущее сообщение станет последним в очереди. Да и остальные сообщения сессии это не задержит.


НЯП, при peek-and-loсk abandon не кладёт сообщение в конец очереди. Снимается блокировка и увеличивается счётчик delivery count. Т.е. должно работать, но при большом количестве сбоев сообщения уходят в deadletter.
Если сообщения обрабатываются не по порядку, то это может быть связано с prefetch.

Стратегия обработки зависит от требуемой пропускной способности. Сообщение в секунду и сотня-тысяча в секунду несколько разные ограничения накладывают
Для первого случая я бы сделал свой message loop, в нём используем long polling для ожидания сообщения, prefetch не используем. При захвате сообщения не забываем про lock renew (обычно таймером + cancellation token делается). Троттлинг к такому велосипеду прикрутить как нефигделать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.