连接工厂:
连接工厂是客户用来创建连接的对象,例如ActiveMQ提供的ActiveMQConnectionFactory。
连接:
JMS Connection 封装了客户与 JMS 提供者之间的一个虚拟的连接。
会话:
JMS Session 是生产和消费消息的一个单线程上下文。会话用于创建消息生产者(producer)、消息消费者(consumer)和消息 (message)等。会话提供了
一个事务性的上下文,在这个上下文中,一组发送和接收被组合到了一个原子操作中。
目的地:
目的地是客户用来指定它生产的消息的目标和它消费的消息的来源的对象。JMS 1.0.2 规范中定义了两种消息传递域:
点对点 (PTP)消息传递域和发布/订阅消息传递域。
点对点消息传递域的特点如下:
1.每个消息只能有一个消费者。
2.消息的生产者和消费者之间没有时间上的相关性。 无论消费者在生产者发送消息的时候是否处于运行状态,它都可以提取消息。
发布/订阅消息传递域的特点如下:
1.每个消息可以有多个消费者。
2.生产者和消费者之间有时间上的相关性。 订阅一个主题的消费者只能消费自它订阅之后发布的消息。JMS 规范允许客户创建持久订阅,这在一定程度上
放松了时间上的相关性要求。 持久订阅允许消费者消费它在未处于激活状态时发送的消息。
在点对点消息传递域中,目的地被成为队列(queue);在发布/订阅消息传递域中,目的地被成为主题(topic)
消息生产者:
消息生产者是由会话创建的一个对象,用于把消息发送到一个目的地。
消息消费者:
消息消费者是由会话创建的一个对象,它用于接收发送到目的地的消息。消息的消费可以采用以下两种方法之一:
1.同步消费。通过调用 消费者的 receive 方法从目的地中显式提取消息。receive 方法可以一直阻塞到消息到达。
2.异步消费。客户可以为消费者注册一个消息监听器,以定义在消息到达时所采取的动作。
消息:
JMS 消息由以下三部分组成:
1.消息头:每个消息头字段都有相应的 getter 和 setter 方法。
2.消息属性:如果需要除消息头字段以外的值,那么可以使用消息属性。
3.消息体: JMS 定义的消息类型有 TextMessage、 MapMessage、 BytesMessage、StreamMessage 和 ObjectMessage。