如何手动将消息发送到 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 队列。
//(前提是在那几秒内没有应用程序从订阅中读取)
已完成
如果消息中毒,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 队列。 //(前提是在那几秒内没有应用程序从订阅中读取)
已完成