0
我正在与天青服务总线队列工作在使用两个队列的请求/响应模式和一般它运作良好后。我使用了我找到的一些很好的例子中非常简单的代码。我的队列在网络和工作者角色之间,使用MVC4,Visual Studio 2012和.NET 4.5。消息在天青服务总线队列保留在队列到期时间
在一些压力测试,我结束了我的过载系统和客户端放弃之前的一些响应不交付(我会解决,这个问题不是重点)。
发生这种情况时,我最终留在我的响应队列许多消息,都远远超过其ExpiresAtUtc
时间。我的消息TimeToLive
已设置5分钟。
当我在队列看看属性的消息是,它明确规定在过去的到期,用5分钟的传输TimeToLive。
创建队列,如果不与下面的代码存在的话:
namespaceManager.CreateQueue(
new QueueDescription(RequestQueueName)
{
RequiresSession = true,
DefaultMessageTimeToLive = TimeSpan.FromMinutes(5) // messages expire if not handled within 5 minutes
});
什么会导致邮件留在不久后它被设置为过期队列?
那么这很有趣,而不是我所期望的。虽然我不断地在队列中收到新的回复,但如果它按照您的建议工作,应该清除已过期的邮件。我使用“AcceptMessageSessionAsync”接收会话消息。这可以忽略/跳过过期的消息吗?此外,我现在用的是服务总线资源管理器应用程序[链接](http://code.msdn.microsoft.com/windowsazure/Service-Bus-Explorer-f2abca5a)监视的队列,并选择接收所有邮件菜单项只拉来自队列的一条消息。 –
伟大的问题,我不能肯定地说。据我所知,这种行为是无证的。不难想象,会话确实影响接收处理哪些消息。但最终,如果你实际上没有收到信息,你真的关心他们是否在那里?另一个建议可能是设置EnableDeadLetteringOnMessageExpiration = true,看看是否改变了行为,但是你有一个你需要倾向于自己的死信队列。 –
感谢您的补充评论。在我的情况下,我确实在乎有消息堵塞队列,因为其中有许多有负载。最终我的队列将填满。我会试验死去的字母,看看会发生什么。 –