我有一个在天蓝色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);
}
}
答案 0 :(得分:4)
您的邮件将被移至deadletter订阅(=子队列)。您可以像访问正常订阅中的消息一样访问deadletter订阅中的消息。
您的死信订阅的路径是:
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();
}
}
因此,访问deadletter订阅的功能应该是这样的:
public void ProcessDeadletterMessage(
[ServiceBusTrigger("topicName", "subscriptionName/$DeadLetterQueue")] BrokeredMessage message)
{
...
}