java - JMS中是否可以由多个消费者从同一个队列消费?

标签 java jms messaging

我正在学习 JMS,我知道有两种类型的通信:
1. 队列
2个主题

我理解主题,但我无法理解是否可以由 2 个不同的消费者从同一个队列中读取内容。

我问这个问题是因为我知道在 amqp 中这是可能的。

让我们有这样的队列

tail -> |5|4|3|2|1|-> head

以及以下操作顺序:

  1. consumer_1 阅读并获得 1
  2. consumer_2 阅读并获得 2
  3. consumer_1 阅读并获得 3
  4. consumer_2 阅读并获得 4
  5. consumer_2 阅读并获得 5

这可能吗,或者与点对点方法相矛盾?

最佳答案

这取决于您想要在 Q 上应用的语义:严格 FIFO 或并行处理。

语义的实现(Q + 消费者 + 并行架构等)取决于产品/架构(即是否集群、多线程等)。

包含用于更新库存的消息的 Q 的语义可能是 FIFO,并且必须按严格的顺序处理,包含要发送给客户的邮件消息的队列可能是并行的,并且可以按任何顺序处理,并且可能有许多并发消费者

关于java - JMS中是否可以由多个消费者从同一个队列消费?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45713111/

相关文章:

java - 如何使用计时器重新安排任务?

spring - 应用表达式评估请求处理程序建议是否会抑制错误?

java - ActiveMq 队列与服务器

java - java.util.Arrays.asList(T...) 是如何工作的?

java - 资源包 (Java)

java - Netty channel 处理程序、线程和堆栈

.net - 是否可以通过互联网公开托管 RabbitMQ 服务器?

android - 从 Activity 访问 Android 收件箱/消息?

json - 匹配行选择传递数据

java - 从 Oracle 数据库转换带有 AM/PM 日期时间的字符串