如何使用 MassTransit 在 Azure 中为死信队列创建处理程序?

How I can create handler for dead-letter queue in Azure using MassTransit?

我需要处理死信队列中的消息。我如何为此创建处理程序?我还需要处理来自错误队列的消息,这些消息也属于死信。

您可以使用 Service Bus Explorer 之类的工具将消息从死信队列移回队列,同样适用于错误队列中的消息。没有用于此目的的特定于 MassTransit 的工具。

如果您知道会导致消息失败的错误,您可以使用服务总线的功能,例如为将来的传递安排消息,而不是将异常一直抛回 MassTransit 并将其移动到错误队列.

作为 Chris Paterson(MassTransit.AzureServiceBus) mentioned that there is no MassTransit-specifc tool for your purpose. If MassTransit is not mandatory, we can hand the dead-letter queue with Azure Service Bus SDK. The dead-letter queue fully supports peek-lock delivery and transactional operations. More details about dead-letter, please refer to the document 的所有者。

我们也可以从github得到demo code about dead-letter。以下代码是演示代码的片段。

  var deadletterReceiver = await receiverFactory.CreateMessageReceiverAsync(QueueClient.FormatDeadLetterPath(queueName), ReceiveMode.PeekLock);
  while (true)
  {
       var msg = await deadletterReceiver.ReceiveAsync(TimeSpan.Zero);
       if (msg != null)
       {
          Console.WriteLine("Deadletter message:");
          foreach (var prop in msg.Properties)
          {
               Console.WriteLine("{0}={1}", prop.Key, prop.Value);
          }
          await msg.CompleteAsync();
          }
          else
          {
               break;
          }
        }
    }