我们在设计应用程序时如何选择Topic/Queue类型的实现。
我知道,
a)如果多个消费者使用消息,则使用主题
b)如果只有一个消费者,则使用队列
请提供更多需要考虑的点?
比如并发、消息持久化、负载均衡,还有什么?
谢谢。
读写器
我们在设计应用程序时如何选择Topic/Queue类型的实现。
我知道,
a)如果多个消费者使用消息,则使用主题
b)如果只有一个消费者,则使用队列
请提供更多需要考虑的点?
比如并发、消息持久化、负载均衡,还有什么?
谢谢。
读写器
如果只有一个消费者使用队列,这并不完全正确。
我们有一个 Java EE 应用程序,我们可以在其中评估保险报价。我们有一个 RatingIn 队列和一个 RatingOut 队列。我们所有的客户都写入 RatingIn 队列并从 RatingOut 队列中读取。我们可能有近 300 多个客户。
多个客户端访问同一个队列进行读取的技巧是在消息头中使用correlationID。让它对客户来说是独一无二的,他们只会收到他们独特的信息。我们所做的是将客户端中的这个correlationID 设置为绑定到RatingIn 的消息。然后服务器获取该属性并写入它写回 RatingOut 的消息。这为唯一的客户端保留了唯一的消息,但不需要 300 多个队列(考虑到我们的应用服务器管理员数量,这在我们公司很快就会变得难以管理)。
我认为这更多地与发布方法有关。如果您希望发布仅针对一个消费者的消息,请使用队列。如果您希望发布针对多个消费者的消息,但不生成大量消息(并且您可能也不知道必须为多少消费者发布),那么请使用主题。