2017-08-16 31 views
0

我学习JMS,我知道有2种类型的通信:
1.队列
2主题是否有可能由JMS中的同一队列中的多个消费者使用?

我了解的话题,但我不明白的是它可以从同一个队列由两个不同的消费者阅读。

我问起它,因为我知道它可能在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

是否可能或它与点对点方法相矛盾?

+0

首先它取决于实现,所以请仔细阅读文档,您正在使用的实现?,好吧,应该可以用这种方式进行配置。 – Raghuveer

+0

@Raghuveer我只是试图学习。目前我正在阅读理论 – gstackoverflow

+2

是的,它是可能的(并且经常使用,例如简单地在多线程中使用消息) –

回答

1

这取决于你要适用于你的Q上的语义:严格FIFO或并行处理..

语义(Q +消费者+并行结构等)的实施是产品/架构依赖(即集群或不,多线程等)。

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

+0

添加到此JMS还允许混合使用并行处理严格的秩序。使用JMSXGroupID和JMSXGroupSeq属性,生产者可以确保消息的一组/一批将由同一个消费者(线程/进程/节点)处理。 –

相关问题