选择消息队列解决方案
存储队列和服务总线队列具有略微不同的功能集。 可以选择其中一种或两者,具体取决于特定解决方案的需求。
在确定哪种队列技术适合给定的解决方案时,解决方案架构师和开发人员应考虑以下建议。
考虑使用服务总线队列
作为解决方案架构师/开发人员,在以下情况下, 应考虑使用服务总线队列 :
- 解决方案需要在无需轮询队列的情况下接收消息。 有了服务总线,就可以使用服务总线支持的基于 TCP 的协议,通过长轮询接收操作来实现此目的。
- 解决方案要求队列必须遵循先入先出 (FIFO) 的传递顺序。
- 解决方案需要支持自动重复检测。
- 希望应用程序将消息作为长时间运行的并行流进行处理(使用消息的 session ID 属性,将消息与流相关联)。 在这种模式下,消费应用程序中的每个节点会竞争流而不是消息。 当流被提供给某个消费节点时,该节点可以使用事务检查应用程序流的状态。
- 解决方案在发送或接收来自队列的多个消息时,需要事务行为和原子性。
- 应用程序处理的消息可能超过 64 KB,但不太可能接近 256 KB 或 1 MB 的限制,具体取决于所选的服务层级(尽管服务总线队列可以处理高达 100 MB 的消息)。
- 需要向队列提供基于角色的访问模型,为发送方和接收方提供不同权限。
考虑使用存储队列
作为解决方案架构师/开发人员,在以下情况下, 应考虑使用存储队列 :
- 应用程序必须在队列中存储超过 80 GB 的消息。
- 应用程序需要跟踪队列中消息的处理进度。 如果处理消息的工作进程发生崩溃,这非常有用。 其他工作进程可以使用该信息从之前的工作进程停止处继续。
- 你需要针对队列执行的所有事务的服务器端日志。