测试Azure死信服务总线队列

时间:2013-04-24 20:37:16

标签: azure integration-testing azureservicebus

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

我们希望扩展我们的自动化测试,以便处理死信的部分也进行测试,但不确定我们如何编写测试以确保消息进入死信队列,正常情况下消息不会死信。

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

任何想法?

2 个答案:

答案 0 :(得分:5)

根据服务总线docs,如果您将EnableDeadLetteringOnMessageExpiration设置为true,如果邮件过期,则会转到死信队列。所以,你可以这样做:

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

您只需等待>即可进行测试1秒钟以确保消息进入死信队列。

修改:您也可以通过receivedMessage.DeadLetter()为收到的消息写死信。这将自动将其置于死信队列中。

答案 1 :(得分:5)

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

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