我有一个在 azure web 作业中处理的主题和订阅,但在经过一定次数的重试后,某些消息应移至死信(队列或主题?)。我不知道如何处理死信消息。有人有代码示例吗? Azure Web 作业可以实现这一点吗?
我几乎要放弃并使用重试计数器手动执行此操作。 目前,这就是我正在做的事情,但我不太喜欢将消息添加回同一个队列的想法:
public void SynchronizeConsumer(
[ServiceBusTrigger("topic")] Consumer consumer,
[ServiceBus("topic")] ICollector withError)
{
try
{
this.consumerSync.SyncConsumer(consumer);
}
catch (Exception ex)
{
consumer.NbOfRetries++; consumersWithError.Add(consumer);
}
}
最佳答案
您的消息将被移动到死信订阅(=子队列)。您可以像访问普通订阅中的消息一样访问死信订阅中的消息。
您的死信订阅路径是:
topicPath/Subscriptions/subscriptionName/$DeadLetterQueue
如果您使用ServiceBusTrigger
,您的函数应该如下所示:
public void ProcessMessage(
[ServiceBusTrigger("topicName", "subscriptionName")] BrokeredMessage message)
{
try
{
// Process you message
...
// Complete the message
message.Complete();
}
catch
{
message.Abandon();
}
}
所以访问死信订阅的函数应该是这样的:
public void ProcessDeadletterMessage(
[ServiceBusTrigger("topicName", "subscriptionName/$DeadLetterQueue")] BrokeredMessage message)
{
...
}
关于azure - 如何处理来自某个主题的死信消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38596141/