Я использую служебную шину для отправки сообщений на 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
.
Есть идеи?