【发布时间】:2018-10-23 20:36:26
【问题描述】:
这个问题与其他有答案的问题相似,但我认为 AF v2 可能会改变(我在没有 v1 经验的情况下跳入 v2)。 AF v2集成的用于与ServiceBus交互的程序集似乎是Microsoft.Azure.ServiceBus,它有一个名为“Message”的类,与其他微软服务总线程序集中的“BrokeredMessage”不太一样。两者之间的一个关键区别是 BrokeredMessage (在几乎所有文档、示例和我能找到的任何其他线程中都引用了它)有一个 .Deadletter() 方法,而 Message 没有。当我无法访问收到消息的客户端或接收者时,如何故意将消息死信?
(我已经看到有关克隆消息、放置我自己的“死信”队列以及让 AF 提交原始消息的建议——我认为这不是一个适当的解决方案。)
【问题讨论】:
-
如果你抛出异常并且没有捕获它,函数宿主将放弃该消息。当达到 maxdeliverycount 时,您的消息将被推送到死信队列
-
是的,但是有“可重试”异常和“不可重试”异常——我想立即捕获不可重试和死信,而不是浪费资源重试直到达到 maxdeliverycount
-
可以考虑把不可重试的抓一次,通过代码移到毒队列中。毒药队列通常使用以下名称“originalqueuename-poison”创建。
-
是的,你这样做你不能使用 servicebustrigger
-
@Baskar - 我可能会遗漏一些东西,但听起来你建议创建我自己的“死信队列” - 我在我的 OP 中指出这不是一个理想的解决方案 - 如果我知道,请告诉我我错过了一些与您的建议不同的地方。
标签: azure azure-functions servicebus