Как получить токен блокировки сообщения служебной шины в Python? - PullRequest
1 голос
/ 03 марта 2020

Я использую служебную шину для отправки сообщений на topi c с тремя подписками. Как только приходит новое сообщение, запускается функция Azure ('azure.functions.servicebus.ServiceBusMessage'). Я хочу удалить это сообщение из соответствующей подписки после завершения функции Azure.

Я читал и видел, что для этого мне нужно указать оба параметра message_id и lock_token. Мне удалось получить message_id, но я не знаю, где найти lock_token.

Тип сообщения, которое я получаю в моей Azure функции: <class 'azure.functions.servicebus.ServiceBusMessage'>, если я печатаю dir(), я получаю следующее:

 ['_ServiceBusMessage__body', '_ServiceBusMessage__content_type', '_ServiceBusMessage__correlation_id', '_ServiceBusMessage__delivery_count', '_ServiceBusMessage__expiration_time', '_ServiceBusMessage__label', '_ServiceBusMessage__message_id', '_ServiceBusMessage__partition_key', '_ServiceBusMessage__reply_to', '_ServiceBusMessage__reply_to_session_id', '_ServiceBusMessage__scheduled_enqueue_time', '_ServiceBusMessage__session_id', '_ServiceBusMessage__time_to_live', '_ServiceBusMessage__to', '_ServiceBusMessage__user_properties', '__abstractmethods__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_abc_cache', '_abc_negative_cache', '_abc_negative_cache_version', '_abc_registry', 'content_type', 'correlation_id', 'delivery_count', 'expiration_time', 'get_body', 'label', 'message_id', 'partition_key', 'reply_to', 'reply_to_session_id', 'scheduled_enqueue_time', 'session_id', 'time_to_live', 'to', 'user_properties']

Таким образом, я могу получить сообщение идентификатор по message.message_id, но я не смог найти способ получить lock_token, который мне нужен, чтобы сделать следующее и удалить свое сообщение:

from azure.servicebus.control_client import ServiceBusService, Message    
sb_client.delete_subscription_message(topic, subscription, message_id, lock_token)

Сообщение, которое я использую для запуска моего Azure Функция импортирована из azure.servicebus.control_client

Я уже пробовал message.complete() и message.delete(), но эти методы не реализованы в azure.functions.servicebus.ServiceBusMessage.

Есть идеи?

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