Как получать сообщения из очереди недоставленных сообщений из очереди служебной шины Azure

У меня есть очередь, и когда я отправляю сообщения в эту очередь, я вижу, что большинство сообщений попадают в очередь недоставленных сообщений. Я хочу повторно отправить их в ту же очередь..
Мне было бы очень полезно, если бы кто-нибудь мог предложить мне какое-либо решение.


person Amit    schedule 04.10.2016    source источник
comment


Ответы (1)


Один из возможных способов — получить сообщения из очереди недоставленных сообщений и отправить их в обычную очередь.

Код Python

Шаг 1. Получите сообщения из очереди недоставленных сообщений:

from azure.servicebus import ServiceBusClient
import json
connectionString = "Your Connection String to Service Bus"
serviceBusClient = ServiceBusClient.from_connection_string(connectionString)
queueName = "Your Queue Name created in the Service Bus"
queueClient = serviceBusClient.get_queue(queueName)
with queueClient.get_deadletter_receiver(prefetch=5) as queueReceiver:
messages = queueReceiver.fetch_next(timeout=100)
for message in messages:
    # message.body is a generator object. Use next() to get the body.
    body = next(message.body)
    # Store the body in some list so that we can send them to normal queue.
    message.complete()

Шаг 2. Отправка сообщений в обычную очередь:

from azure.servicebus import ServiceBusClient, Message
connectionString = "Your Service Bus Connection String"
serviceBusClient = ServiceBusClient.from_connection_string(connectionString)
queueName = "Your Queue name"
queueClient = serviceBusClient.get_queue(queueName)

messagesToSend = [<List of Messages that we got from the dead letter queue>]

with queueClient.get_sender() as sender:
    for msg in messagesToSend:
        sender.send(Message(msg))

Надеюсь это поможет.

person anilkumar kasaragadda    schedule 21.06.2019