我们有一个服务监听 Azure 服务总线队列。我们还有另一个服务监听该队列的死信队列。当我们的 Azure 应用程序部署后,我们还有一系列测试来运行它们。我们想扩展自动化测试,以便测试处理死信的部分,但不确定如何编写测试以确保消息到达死信队列,因为在正常情况下消息不会成为死信。
目前我们正在手动测试,但我觉得这不是长期的选择。
有什么想法吗?
目前我们正在手动测试,但我觉得这不是长期的选择。
有什么想法吗?
根据Service Bus 文档,如果将EnableDeadLetteringOnMessageExpiration
设置为true,则消息过期后会被发送到死信队列。因此,您可以执行以下操作:
var desc = new QueueDescription(QueueName);
desc.EnableDeadLetteringOnMessageExpiration = true;
desc.DefaultMessageTimeToLive = TimeSpan.FromSeconds(1); // one second is the min value
您只需等待超过1秒钟,即可测试以确保消息进入死信队列。
编辑:您还可以通过执行 receivedMessage.DeadLetter()
将已接收的消息发送到死信队列。这将自动将其放置在死信队列中。