2015-02-24 2 views
0

Я работаю над проектом, где мы бы хотели использовать ServiceBus как классическую очередь для обмена сообщениями. Очень часто я вижу сообщения в очереди, которые я не могу получить. Эти сообщения активны (а не мертвые буквы). Я не получаю никаких исключений, он ждет тайм-аута, а затем сообщение равно null без каких-либо проблем. Я уже проверил размер сообщений, но все они меньше 1,5 КБ.Azure Service Bus issue

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

ответ

0

Read How to receive messages from a queue и убедитесь, что вы используете _queueClient.Complete() или _queueClient.Abandon(), чтобы закончить с каждым сообщением.

+0

Да, я завершаю или отказываюсь, я показал только часть кода. Если вы не сделаете это за 30 секунд, сообщение будет помечено как мертвая буква. – AChudov

+0

AFAIK default TTL в очереди довольно бесконечен (с помощью Visual Studio вы можете увидеть 10675199.02: 48: 05.4775807 как значение в DefaultMessageTimeToLive). Вы можете проверить это значение в своей очереди? – ppatierno