不确定我应该使用哪个天蓝色队列

时间:2018-04-02 11:03:57

标签: azure queue azureservicebus

目前,我在处理从应用程序发送到azure队列的数据时遇到问题。我发送的数据需要发送FIFO但Azure Queue不能保证按顺序排列。而Azure Service Bus Queue保证是FIFO。

我不确定Azure Service Bus Queue与Azure Queue有任何差异。

2 个答案:

答案 0 :(得分:1)

存储队列中的消息通常是先进先出,但有时它们可​​能会出现故障;例如,当消息的可见性超时持续时间到期时(例如,由于客户端应用程序在处理期间崩溃)。当可见性超时到期时,该消息在队列上再次可见,以便另一个工作人员将其出列。此时,新显示的消息可能会在最初排入其后的消息之后放入队列中(要再次出列)。

您会发现本文有助于为您的案例做出决定:Storage Queues and Service Bus Queue comparison它比较了存储队列和服务总线队列提供的一些基本排队功能

另请阅读Get started with Service Bus Queues

答案 1 :(得分:0)

作为解决方案架构师/开发人员,在以下情况下应考虑使用存储队列

  • 您的应用程序必须在队列中存储超过80 GB的邮件,其中邮件的有效期少于7天。
  • 您的应用程序希望跟踪处理队列内部消息的进度。如果处理消息的工作程序崩溃,这将非常有用。然后,随后的工作人员可以使用该信息从前任工作人员离开的地方继续。
  • 您需要对队列执行的所有事务的服务器端日志。

作为解决方案架构师/开发人员,在以下情况下应考虑使用Service Bus队列

  • 您的解决方案必须能够接收消息而无需轮询队列。使用Service Bus,可以通过使用Service Bus支持的基于TCP的协议使用长轮询接收操作来实现。
  • 您的解决方案要求队列提供有保证的先进先出(FIFO)订购交付。
  • 您希望在Azure和Windows Server(私有云)上获得对称体验。有关详细信息,请参阅Service Bus for Windows Server
  • 您的解决方案必须能够支持自动重复检测。
  • 您希望应用程序将消息作为并行长时间运行的流处理(消息使用消息上的SessionId属性与流关联)。在此模型中,使用应用程序中的每个节点都会竞争流,而不是消息。将流提供给使用节点时,该节点可以使用事务检查应用程序流状态的状态。
  • 在从队列发送或接收多条消息时,您的解决方案需要事务性行为和原子性。
  • 特定于应用程序的工作负载的生存时间(TTL)特征可能会超过7天。
  • 您的应用程序处理的邮件可能超过64 KB,但不会接近256 KB的限制。
  • 您需要为队列提供基于角色的访问模型,以及为发件人和收件人提供不同的权限/权限。
  • 您的队列大小不会超过80 GB。
  • 您希望使用基于AMQP 1.0标准的消息传递协议。有关AMQP的更多信息,请参阅Service Bus AMQP概述。
  • 您可以设想最终从基于队列的点对点通信迁移到消息交换模式,从而实现其他接收者(订阅者)的无缝集成,每个接收者都接收发送到其中的部分或全部消息的独立副本。队列。后者指的是Service Bus本身提供的发布/订阅功能。
  • 您的消息传递解决方案必须能够支持“最多一次”交付保证,而无需您构建其他基础架构组件。
  • 您希望能够发布和使用批量邮件。

https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-azure-and-service-bus-queues-compared-contrasted