2

我有一个在 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); 
    } 
}
4

1 回答 1

5

您的消息将被移动到死信订阅(= 子队列)。您可以像访问普通订阅中的消息一样访问死信订阅中的消息。

您的死信订阅路径是:

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)
{
    ...
}
于 2016-07-26T20:34:15.187 回答