PeekLock Microsoft Azure Service Bus - PullRequest
       7

PeekLock Microsoft Azure Service Bus

0 голосов
/ 21 марта 2019

Я использую несколько потребителей для получения сообщений из очереди с ReceiveMode.PeekLock. Когда я блокирую сообщение с одним получателем, но не завершаю получение сообщения, чтобы удалить его из очереди, другие получатели не имеют к нему доступа.

Мой вопрос заключается в том, имеют ли другие потребители доступ к другим сообщениям, когда это сообщение заблокировано и еще не удалено из очереди, или они заблокированы от попыток удалить из очереди и получить любое другое сообщение из этой очереди?

1 Ответ

0 голосов
/ 21 марта 2019

Да, потребители делают имеют доступ к другим сообщениям в очереди, но не к тому, которое заблокировано .
В противном случае масштабирование, основанное на сообщениях очереди, не помогло бы, так как другие потребители ожидали бы обработки первого сообщения, после чего потребитель, которого все ожидают, сможет получить следующее сообщение ...

С Сообщение Peek-Lock (неразрушающее чтение)

Эта операция атомарно извлекает и блокирует сообщение из очереди или подписки для обработки. Гарантируется, что сообщение не будет доставлено другим получателям (только в той же очереди или подписке) в течение периода блокировки, указанного в описании очереди / подписки. Когда блокировка истекает, сообщение становится доступным для других получателей. Чтобы завершить обработку сообщения, получатель должен выполнить команду удаления с идентификатором блокировки, полученным из этой операции. Чтобы отказаться от обработки сообщения и разблокировать его для других получателей, необходимо выполнить команду «Разблокировать сообщение», в противном случае период продолжительности блокировки может истечь.

...