Вызов IQueueClient.CompleteAsyn c () из ServiceBus из другого потока всегда дает сбой - PullRequest
0 голосов
/ 09 февраля 2020

Я получаю из очереди, используя IQueueClient.RegisterMessageHandler(), и в методе получения я запускаю задачу Hangfire. Но в задаче Hangfire все вызовы IQueueClient.CompleteAsync(), чтобы пометить сообщение как использованное (потому что я использую режим ReceiveMode.PeekLock), терпят неудачу.

Я подозреваю, что это из-за того, что задача Hangfire воссоздает IQueueClient, может быть потому, что вызов CompleteAsync() происходит из другого экземпляра IQueueClient? Или что-то еще может пойти не так? Я передаю Message.SystemProperties.LockToken в задачу Hangfire, которая затем используется CompleteAsync.

1 Ответ

0 голосов
/ 10 февраля 2020

Я подозреваю, что это потому, что задача Hangfire заново создает IQueueClient, возможно, потому что вызов CompleteAsyn c () происходит из другого экземпляра IQueueClient?

Это правильно. LockToken недостаточно для завершения сообщения. Вы должны использовать тот же клиент, который использовался для получения сообщения, чтобы завершить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...