如何使用 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;
}
}
}
我需要处理死信队列中的消息。我如何为此创建处理程序?我还需要处理来自错误队列的消息,这些消息也属于死信。
您可以使用 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;
}
}
}