2014-09-10 167 views
7

我最近创建了一些分区队列,从我发送和接收的所有时间开始。他们在过去没有任何当前问题的情况下以非分区方式运行。Azure服务总线队列消息卡住了

问题是,我有一个不能接收的队列中的消息数量。当没有向队列发送任何其他消息时,我总是得不到任何回应,但当我向队列发送消息时,我会收到没有问题的新消息。卡在队列中的消息是活动消息,而不是死信。

我怀疑他们卡在一个特定的分区,但我不知道如何接收他们。

由于我无法接收这些消息是否有办法重置ServiceBus队列?

任何想法?

更新:

的数量不是恒定的,但非常缓慢增加。在我们的测试环境中,我们每小时收到的消息少于2000条,队列重置为0(零)后,在过去12小时内每条消息都收到约20条消息。这些消息就在那里但不可接收。至少不是以通常的方式。

该问题仅在两个命名空间分区后进行。这个问题不在我们没有使用分区队列的实时环境中。

+3

您是否依赖于namespaceManager.GetQueue().MessageCount? - >如果是这样 - 你可以使用Service Bus Explorer工具或使用Api浏览Q,当你观察到Q处于停滞状态并浏览/查看顶部消息,然后发送另一个消息并查看顶部味精不会改变。我怀疑它可能只是一个计数问题。如果是这种情况 - 禁用并启用Q将导致将NSMgr.GetQueue().MessageCount重置为正确的值。 – Sreeram 2014-09-25 17:20:53

+0

@ 1of5om3消息显示在门户和浏览队列通过VS和编程。在向它发送消息时它会计数,并在接收和删除它时倒计数。我们最终决定暂时不使用它,因为它似乎可能存在反制问题,但我们无法确定。关于禁用/启用也是对的。 – user2413912 2014-09-26 07:25:53

回答

2

我在我们的制作环境中看到过类似的东西 - 也许它的行为与您所看到的相同。使用ServiceBusExplorer或类似的东西,检查消息的'ContentType'= application/vnd.ms-servicebus-ping。

如果是这样的话...这是一个(Azure)系统生成的消息来确定队列的可用性......据我所知,这些消息在接收后应该消失......但我也不会。从MS的文件是稀疏的这东西... ...

在任何情况下,如果你确定这是原因,你至少可以放心,他们不是你的信息被困在ServiceBus purgatory。希望MS很快修复这个问题...

+0

@RDPP - 锁定队列的持续时间为5分钟 – jglassco 2015-01-07 16:17:15

+0

这似乎是最准确和可能的原因。 – Dusty 2015-01-20 00:26:55

0

检查队列的锁定持续时间。如果消息已收到但未标记为完整(),它们似乎会“卡住”(不可接收),直到锁再次释放消息。