Почему я получаю сообщение «Недопустимая блокировка».ошибка при попытке удалить сообщение очереди с помощью LockTocken - PullRequest
0 голосов
/ 19 июня 2019

Я использую язык Python для отправки и получения сообщений, используя очередь службы шины Azure.

Я получаю "Предоставленная блокировка недействительна. Срок действия блокировки истек, или сообщение уже удалено из очереди"при удалении сообщения из очереди с использованием приведенного ниже кода.

sbs.delete_queue_message ('taskqueue', 5, 'ef4e2189-bfef-42ac-ba09-7fd20287f6a9') sbs.delete_queue_message ('taskqueue', 'SequenceNumber ',' LockToken ')

from azure.servicebus.control_client import ServiceBusService, Message, Topic, Rule, DEFAULT_RULE_NAME
key_name = '###############' # SharedAccessKeyName from Azure portal
key_value = '####################' # SharedAccessKey from Azure portal
service_namespace = '###########'
sbs  = ServiceBusService(service_namespace,shared_access_key_name=key_name,shared_access_key_value=key_value)      


msg = sbs.receive_queue_message('taskqueue')
sbs.delete_queue_message('taskqueue',5,'ef4e2189-bfef-42ac-ba09-7fd20287f6a9')

1 Ответ

0 голосов
/ 19 июня 2019

Срок действия блокировки может истечь, если сообщение обрабатывается дольше, чем MaxLockDuration, указанное для очереди. Проверьте, какое значение для очереди taskqueue и какова продолжительность обработки вашего сообщения с момента его получения и до вызова delete_queue_message().

Дополнительным соображением является предварительная выборка, но я не уверен, включена ли она для клиента Python или нет. Стоит проверить, что оно либо установлено в ноль, либо не приводит к потере блокировок сообщения во время ожидания обработки.

...