测试Azure死信服务总线队列

Sam*_*der 1 integration-testing azure azureservicebus

我们有一个侦听Azure服务总线队列的服务.我们有另一个服务来监听这个队列的死信队列.我们还有一系列测试,这些测试在部署后针对我们的Azure应用程序运行.

我们想扩展我们的自动化测试,以便处理死信的部分也经过测试,但不确定我们如何编写测试以确保消息到达死信队列,因为在正常情况下消息不会死信.

目前我们正在手动测试,但我觉得这不是一个长期的选择.

有任何想法吗?

The*_*ude 5

根据Service Bus 文档,如果设置EnableDeadLetteringOnMessageExpiration为true,如果邮件过期,则会转到死信队列.所以,你可以这样做:

var desc = new QueueDescription(QueueName);
desc.EnableDeadLetteringOnMessageExpiration = true;
desc.DefaultMessageTimeToLive = TimeSpan.FromSeconds(1); // one second is the min value
Run Code Online (Sandbox Code Playgroud)

您可以通过等待> 1秒进行测试,以确保消息进入死信队列.

编辑:您也可以通过执行死信收到的消息receivedMessage.DeadLetter().这将自动将其置于死信队列中.


Vla*_*hov 5

在Service Bus API中,Microsoft不提供直接向死信队列发送消息而不将消息放入主队列的功能.如果您尝试使用死信队列的路径创建MessageSender,它将失败并出现异常.

您需要使用假实现来模拟您的主队列接收器,该实现调用BrokeredMessage.DeadLetter()方法将消息传输到死信队列.