Как правильно приостановить Rebus от получения сообщений? - PullRequest
1 голос
/ 25 марта 2019

У меня похожая ситуация, описанная здесь , но я не могу комментировать там, потому что только что зарегистрировался на этом сайте. Обходной путь для «приостановки» с SetNumberOfWorkers(0) работает в большинстве случаев. Однако, если SetNumberOfWorkers(0) вызывается во время длинного обработчика сообщений, я получаю следующую ошибку в конце обработчика сообщений:

An error occurred when attempting to complete the transaction context Rebus.Exceptions.RebusApplicationException: Could not complete message with ID <...> and lock token <...> ---> Microsoft.Azure.ServiceBus.MessageLockLostException: The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue.

Обратите внимание, что "Worker Rebus 1 worker 1 stopped" сообщения принимаются для всех работников почти сразу после вызова SetNumberOfWorkers(0), несмотря на то, что обработчик все еще работает.

После приведения числа рабочих в норму все последующие сообщения выдают аналогичную ошибку в конце обработчика.

Какой-нибудь совет, как правильно бороться с паузой ребуса?

(Мне нужно сделать паузу, потому что мой микросервис требует периодического обновления некоторых ресурсов, и обработчики не могут работать во время этого обновления)

...