1 消息驱动Bean(MDB)
1.1 JMS(Java Message Service)
1.1.1 JMS概念
JMS是java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输,JMS支持两种消息模型:Point-to- Point和Publish/Subscribe(pub/sub),即点对点和发布/订阅模式。这两种消息传递模型非常相似,但有以下区别:
- PTP 消息传递模型规定了一条消息只能传递给一个接收方。
- Pub/sub 消息传递模型允许一条消息传递给多个接收方。
消息传递系统的中心就是消息。一条 Message 由三个部分组成:
- 头(header)每条 JMS 消息都必须具有消息头。头字段包含用于路由和识别消息的值。可以通过多种方式来设置消息头的值:
-
- 由 JMS 提供者在生成或传送消息的过程中自动设置
- 由生产者客户机通过在创建消息生产者时指定的设置进行设置
- 由生产者客户机逐一对各条消息进行设置
- 属性(property)消息可以包含称作属性的可选头字段。它们是以属性名和属性值对的形式指定的。可以将属性视为消息头的扩展,其中可以包括以下信息:创建数据的进程、数据的创建时间以及每条数据的结构。JMS 提供者也可以添加影响消息处理的属性,如是否应压缩消息或如何在消息生命周期结束时废弃消息。
- 主体(body)包含要发送给接收应用程序的内容。每个消息接口特定于它所支持的内容类型。JMS 为不同类型的内容提供了它们各自的消息类型,但是所有消息都派生自 Message 接口。
-
- StreamMessage:一种主体中包含 Java 基元值流的消息。其填充和读取均按顺序进行。
- MapMessage:一种主体中包含一组名-值对的消息。没有定义条目顺序。
- TextMessage:一种主体中包含 Java 字符串的消息(例如,XML 消息)。
- ObjectMessage:一种主体中包含序列化 Java 对象的消息。
- BytesMessage:一种主体中包含连续字节流的消息。
1.1.2 消息的传递模型
Ø 点对点消息传递
通过点对点 (PTP) 的消息传递模型,一个应用程序可以向另一个应用程序发送消息。在此传递模型中,目标类型是队列。消息首先被传送至队列目标,然后从该队列将消息传送至对此队列进行监听的某个消费者,如下图:
一个队列可以关联多个队列发送