如何手动将消息发送到 Azure Function 中的服务总线死信队列?

How to manually send message to service bus dead letter queue in Azure Function?

如果消息中毒,Azure 服务总线队列触发函数将执行将消息发送到死信队列的默认策略。但是,我们是否可以手动将消息发送到死信队列?有几次我们不希望 Azure Functions 执行其默认策略,因为某种原因内部或业务异常,我们想将其他信息绑定到我们的消息并手动将其发送到我们的 Azure 服务总线死信队列

在使用 BrokeredMessage 对象的先前版本中,有一个名为

的方法
BrokeredMessage msg;
msg.DeadLetter();

然而,在最近的 Functino 2.X 中,它使用 Message 对象,但不知何故没有此方法...

在 Functions 2.0 中,您可以使用 .NET Standard Service Bus 客户端。消息不再有死信等操作。相反,您需要添加一个 MessageReceiver 类型的附加参数才能使用它提供的 DeadletterAsync() 方法。您可以在我的 post.

中找到如何使用消息接收器的示例

据我所知,没有直接的方法,但以下步骤可能会有所帮助:

  • 转到 Azure 门户中的队列概述并在 subscription/queue 上启用 dead-lettering 消息过期。
  • 将消息的 TimeToLive 设置为几秒钟。 (我是在创建测试队列的时候做的,创建的时候很简单)
  • 将消息推送到您的订阅。
  • 几秒钟之内,您的所有邮件就会进入 dead-letter 队列。 //(前提是在那几秒内没有应用程序从订阅中读取)

已完成