为了发送或接收消息,JMS 客户端必须先连接到 JMS 提供者(该提供者通常作为消息代理实现):此连接在客户端与代理之间打开一个通信通道。接下来,客户端必须设置一个用来创建、生成和使用消息的会话。可以将该会话视为定义客户端与代理之间的特定对话的消息流。客户端本身就是消息生成方和/或消息使用方。消息生成方向代理所管理的目的地发送一条消息。消息使用方访问该目的地以使用此消息。该消息包括消息头、属性(可选)和主体。消息主体用来保存数据;消息头中包含代理路由和管理消息所需的信息;属性可以由客户端应用程序或提供者定义,以满足处理消息的需要。连接、会话、目的地、消息、生成方和使用方是构成 JMS 应用程序的基本对象。
通过这些基本对象,客户端应用程序可以两种消息传送模式(或域)发送和接收消息。图 1–4 对此进行了说明。
客户端 A 和 B 是消息生成方,它们通过两种不同类型的目的地向客户端 C、D 和 E 发送消息。
客户端 A、C 和 D 之间的消息传送说明了点对点模式。客户端使用此模式向队列目的地发送一条消息,只有一个接收者能够从该目的地获得该消息。访问该目的地的其他任何接收者都不能获得该消息。
客户端 B、E 和 F 之间的消息传送说明了发布/订阅模式。客户端使用此广播模式向主题目的地发送一条消息,任意数量的使用方订户都可以从该目的地检索此消息。每个订户都获得此消息的一个副本。
任何域中的消息使用方都可以选择同步或异步获取消息。同步使用方通过显式调用来检索消息;异步使用方则指定一个回调方法,将调用该回调方法来传递待处理的消息。使用方还可以通过为传入消息指定选择标准来过滤消息。