use*_*679 2 azure azureservicebus azure-webjobs azure-webjobssdk azure-servicebus-topics
我有一个在 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);
}
}
Run Code Online (Sandbox Code Playgroud)
您的消息将被移动到死信订阅(= 子队列)。您可以像访问来自普通订阅的消息一样访问来自死信订阅的消息。
您的死信订阅路径是:
topicPath/Subscriptions/subscriptionName/$DeadLetterQueue
Run Code Online (Sandbox Code Playgroud)
如果你使用ServiceBusTrigger,你的函数应该是这样的:
public void ProcessMessage(
[ServiceBusTrigger("topicName", "subscriptionName")] BrokeredMessage message)
{
try
{
// Process you message
...
// Complete the message
message.Complete();
}
catch
{
message.Abandon();
}
}
Run Code Online (Sandbox Code Playgroud)
所以访问死信订阅的函数应该是这样的:
public void ProcessDeadletterMessage(
[ServiceBusTrigger("topicName", "subscriptionName/$DeadLetterQueue")] BrokeredMessage message)
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1330 次 |
| 最近记录: |