2015-02-24 127 views
0

我正在开发一个项目,我们希望使用ServiceBus(如经典队列)来进行消息传递。我经常看到队列中的消息,我无法得到。这些消息是活动的(不是死信)。我没有收到任何异常,它等待超时,然后消息没有任何问题。我已经检查过消息的大小,但都小于1.5 KB。Azure服务总线问题

try 
... 
QueueClient _queueClient = QueueClient.CreateFromConnectionString(Properties.Settings.Default.ServiseBusConnectionString, Properties.Settings.Default.StatQueueName); 

var count = 1000; 

for (var i = 1; i <= count; i++) 
{ 
var message = _queueClient.Receive(); 
//timeout 
if (message == null) 
{ 
    //message is null :(
    continue; 
} 
} 
... 
catch 
+0

您是否尝试过使用Azure ServiceBus资源管理器来检索邮件? http://blogs.msdn.com/b/paolos/archive/2014/12/04/service-bus-explorer-2-5-now-available.aspx – viperguynaz 2015-02-24 03:43:39

回答

0

阅读How to receive messages from a queue,并确保您使用_queueClient.Complete()_queueClient.Abandon()与每个消息来完成。

+0

是的,我完成或放弃了,我只展示了一部分的代码。如果您在30秒超时时间内未执行此操作,则会将消息标记为死信。 – AChudov 2015-02-24 05:35:08

+0

AFAIK队列中的默认TTL是相当无限的(使用Visual Studio,您可以在DefaultMessageTimeToLive中看到10675199.02:48:05.4775807的值)。你可以在队列中检查这个值吗? – ppatierno 2015-02-24 11:06:12