【发布时间】:2015-03-05 19:44:10
【问题描述】:
我正在学习 Spring Core 认证,我对 JMS 的工作原理以及 Spring 如何处理它有一些疑问。
所以我知道 JMS 核心组件是:
- 留言
- 目的地
- 连接
- 会话
- 消息生产者
- 消息消费者
据我了解,Message 是发送并与其他实体(必须使用此数据的其他产品)共享的内容,并且消息可以具有不同的形状:TextMessage、ObjectMessage、MapMessage、BytesMessage 和 StreamMessage。
好的,据我了解,JMS 核心组件的 Destination 组件定义了谁接收消息以及发送消息的逻辑。
所以我知道我有两种目的地:
-
队列:定义点对点消息。据我了解,我可以有一些 Message Producer 将生成的消息放入队列,然后我有一些 MessageConsumer 消耗消息。每条消息都可以被一个MessageConsumer消费。
现在我的疑问是:MessageConsumer 消费由特定 MessageProducer 放入队列的消息(MessageConsumer 和 MessageProducer) 或 MessageProducer 放置一个与特定 MessageConsumer 相关的 id,该特定 MessageConsumer 必须读取它放入队列中的消息?
例如,在第一种情况下,如果我有 2 个 MessageProducer 分别命名为 Producer-1 和 Producer-2 我需要2 个名为 Consumer-1 和 Consumer-2 的 MessageConsumer,其中 Consumer-1 使用从 Producer 生成的消息-1 和 Consumer-2 使用 **Producer-2) 生成的消息。
在第二种情况下,Consumer-1 可以消费由 Producer-1 和 Produer-2 生成的消息,因为 strong>MessageProducer 将消息放入队列中,指定谁是必须使用该消息的 MessageConsumer。
具体是如何工作的?正确的逻辑是什么?
【问题讨论】:
标签: java spring jakarta-ee jms spring-jms