Как переместить сообщение служебной шины в тупик в функции запуска очереди служебной шины - PullRequest
0 голосов
/ 13 апреля 2020

Как мы можем переместить сообщение очереди служебной шины в мертвую букву с помощью функции запуска очереди служебной шины

Ответы [ 3 ]

0 голосов
/ 13 апреля 2020

Чтение сообщений очереди недоставленных сообщений осуществляется созданием функционального триггера Azure на портале Azure. В функции укажите имя DLQ как «QueueName / $ DeadLetterQueue», как показано на изображении ниже

enter image description here

Примечание: Если вы хотите получить доступ к недоставленному сообщению из Topi c, тогда синтаксис чтения очереди недоставленных сообщений будет «TopicName / Subscription / SubscriptionName / $ DeadLetterQueue».

Теперь определите, что должно быть сделано с сообщениями DLQ. Здесь, как показано на скриншоте ниже, мы отправляем сообщения DLQ «myqueue» в Topi c с именем «queue», используя Azure Service Bus

enter image description here

enter image description here

Таким образом, мы можем очень просто обрабатывать сообщения DLQ, используя Azure Функции.

0 голосов
/ 13 апреля 2020

https://github.com/Azure/azure-webjobs-sdk/issues/1986#issuecomment -433960534

В v3 вы можете привязаться к классу MessageReceiver, который предоставляет такие методы, как DeadLetter, Abaondon, Complete и др. c. Пример:

public static async Task ProcessMessage(
    [ServiceBusTrigger("myqueue")] string message, int deliveryCount,
    MessageReceiver messageReceiver,
    string lockToken)
{
    . . .
    await messageReceiver.DeadLetterAsync(lockToken);
    . . .
}

В этом примере сообщение связано как строка, а различные свойства сообщения, включая lockToken, связаны как параметры. Вы также можете связать сообщение как Тип сообщения и получить доступ к необходимым свойствам сообщения оттуда. В v2 ServiceBus SDK представил эти методы сообщений непосредственно в самом классе BrokeredMessage, но в последней версии их SDK эти методы больше не существуют, что означает, что для доступа к ним необходимо привязаться к MessageReceiver.

0 голосов
/ 13 апреля 2020

Я не пробовал, но вы можете установить для свойства MaxDeliveryCount в очереди значение 1, а затем вызвать исключение в функции, как только оно будет запущено. Таким образом, счетчик доставки сообщения увеличится на 1, и служебная шина автоматически переведет сообщение в тупик.

...