0

我正在使用Azure服务总线订阅和主题发送订单和获取订单。我们有一个Windows应用程序,它使用来自Azure服务总线订阅的Web API来下订单。从Azure服务总线订阅中获取所有代理消息

假设用户登录并获得5个订单。如果用户从Windows应用程序注销,然后我们解锁来自天蓝色服务总线的消息。并且如果用户在5分钟或更少时间后再次登录,那么我们没有从天蓝色的服务总线获取所有订单。它有时像3或4。

任何人都可以帮助我解决这个问题,为什么我没有再次获得所有5个订单。我正在使用subscriptionClinet的ReceiveBatch方法来提取消息。

+0

请您详细说明第二段?你是什​​么意思“f用户从Windows应用程序注销,然后我们从azure服务总线解锁消息”?另外,当用户登录时,你是否拉下所有消息? –

+0

嗨肖恩,我的意思是在Windows应用程序中有登录/注销功能。当用户登录时,我们使用peeklock方法从azure中获取消息,并将消息锁定时间设置为5分钟,因为我们需要一些时间来处理消息。如果我们完成了一条消息,那么我们将它标记为从服务总线订阅完成。如果我们在用户注销时没有解锁消息,那么我们将不会收到消息,直到那些未通过天蓝色自动解锁的消息。因此,当用户注销时,我们手动放弃来自azure的消息,以便其他Windows应用用户可以获取这些消息。 –

+0

它也可能是TTL(TimeToLive)过期问题。 –

回答

0

我怀疑你遇到了交货计数问题。假设我正确理解你说的话,Windows应用程序将以PeekLock模式拉取消息。一旦消息被处理,你就完成了。否则,退出应用程序后,您会放弃这些消息。如果你没有完成处理消息,并且用户退出,则消息被放弃,而DeliveryCount增加。一旦DeliveryCount超过实体上设置的最大值,该消息将停止工作,并且不会再发送。

  1. 检查MaxDeliveryCount对实体
  2. 检查你entity`s DLQ验证是否是这种行为
  3. 情况下,他们是DLQed,我建议寻找到centralising your DLQs更容易错误处理
相关问题