2014-09-10 3 views
7

Недавно я создал несколько секционированных очередей, из которых я постоянно отправляю и получаю. В прошлом они выполнялись как не разделенные, без каких-либо моих текущих проблем.Сообщения о очередях Azure Service Bus застряли

Проблема в том, что я имею постоянное количество сообщений в очереди, которую я не могу получить. Я всегда ничего не получаю, когда не отправляю никаких сообщений в очереди, но когда я отправляю сообщения в очереди, я получаю новые сообщения без проблем. Сообщения, которые застревают в очереди, являются активными сообщениями, а не мертвыми буквами.

Я подозреваю, что они застряли в определенных разделах, но я не знаю, как их получить.

Поскольку я не могу получить эти сообщения, есть способ сбросить очередь ServiceBus?

Любые идеи?

Update:

Число не является постоянной, но очень медленно растет. В нашей тестовой среде мы получаем чуть больше 2000 сообщений в час, а очереди после сброса на 0 (ноль) получили по 20 сообщений в течение последних 12 часов. Эти сообщения есть, но не подлежат получению. По крайней мере, не так.

Проблема заключается только в двух пространствах имен после того, как они были разделены. Проблема не в нашей среде, где мы не используем секционированные очереди.

+3

Вы зависеть от namespaceManager.GetQueue(). MessageCount? -> если это так - можете ли вы просмотреть Q с помощью Service Explorer Explorer или с помощью Api, когда вы заметили, что Q находится в состоянии Stuck и просматривает/просматривает верхнее сообщение, а затем отправляет другое сообщение и видит ли Top msg не меняется. Я подозреваю, что это, вероятно, просто проблема с подсчетом. Если это так - Отключить и включить Q приведет к сбросу NSMgr.GetQueue(). MessageCount к правильному значению. – Sreeram

+0

@ 1of5om3 Сообщения появляются на обоих порталах и при просмотре очередей через VS и программно. Он будет рассчитывать при отправке сообщений на него и обратном отсчете при получении и удалении из него. Мы, наконец, решили не использовать его на данный момент, поскольку, похоже, проблема может быть встречной, но мы не можем быть уверены. И вы правы насчет отключения/включения. – user2413912

ответ

2

Я видел подобную вещь в нашем производстве env - возможно, это то же поведение, что и вы. Используя ServiceBusExplorer или что-то подобное, проверьте, есть ли сообщение 'ContentType' = application/vnd.ms-servicebus-ping.

Если это так ... это сообщение сгенерированное системой (Azure) для определения доступности очереди ... насколько я знаю, эти сообщения должны исчезнуть после их получения ... но у меня тоже нет. Документация от MS разрежена на этом материале ...

В любом случае, если вы убедитесь, что это причина, вы можете по крайней мере быть уверены, что они не являются вашими сообщениями, застрявшими в чистке ServiceBus. Надеюсь, MS скоро исправит это ...

+0

@RDPP - Длительность блокировки очереди составляет 5 минут – jglassco

+0

Это кажется наиболее точным и вероятным _cause_ для несоответствия. – Dusty

0

Проверьте продолжительность блокировки вашей очереди. Если Сообщения были получены, но не отмечены как Complete(), они, похоже, «застревают» (не принимаются) до тех пор, пока блокировка не освободит сообщение еще раз.