主要接口:
ConnectionFactory: 一个创建Connection的受管理对象
P2P: QueueConnectionFactory
Pub/Sub: TopicConnectionFactory
方法:
createConnection(): 提供可以被JNDI检索的受管理对象, 返回Connection
Connection: 连接到提供者的活动连接
P2P: QueueConnection
Pub/Sub: TopicConnection
方法:
createSession(boolean, int): 返回Session对象
start(): 激活提供者发送消息
stop(): 零时停止发送, 可以重新开始发送
close(): 关闭到提供者的连接, 释放资源
Destination: 一个封装消息目的地的身份的受管理的对象, 如消息的来源地和目的地
P2P: Queue
Pub/Sub: Topic
方法:
Session: 发送和接受消息的单线程环境
P2P: QueueSession
Pub/Sub: TopicSession
方法:
createProducer(Destination): 返回一个MessageProducer对象, 向指定的Destination发送消息
createConsumer(Destination): 返回一个MessageConsumer对象, 接收来自指定的Destination的消息
commit(): 提交当前事务所有使用的和产生的消息
rollback(): 回滚当前事务所有使用的和产生的消息
create<MessageType>Message(...): 一组返回如MapMessage, TextMessage的方法
MessageProducer: 用于发送消息
P2P: QueueSender
Pub/Sub: TopicPublisher
方法:
send(Message): 发送指示的Message
setDeliveryMode(int): 设置后续消息的发送模式
setPriority(int): 设置后续消息的发送优先级
setTimeToLive(long): 设置后续消息失效前的持续时间
MessageConsumer: 用于接受消息
P2P: QueueReceiver, QueueBrowser
Pub/Sub: TopicSubscriber
方法:
receive(): 返回下一个到达的消息, 可能会被阻塞
receive(long): 接收下一个long毫秒内到达的消息, 如果时间限制内没有消息, 返回null
receiveNoWait(): 如果有一个消息立即可用, 则接收下一个消息, 否则返回null
setMessageListener(MessageListener): 对象在消息到达时接受它们
MessageListener: 提供消息的异步接受和处理
onMessage(Message): 提供消息的异步接受和处理
消息系统的组成
header: 一组标准字段, 客户机和提供者利用它们来标示和路由消息
JMSMessageID: 标识提供者发送的每一条消息, 发送过程中由提供者设置
JMSDestination: 消息发送的Destination, 由提供者设置
JMSDeliveryMode: 包括DeliveryMode.PERSISTENT(被且只被传输一次)和DeliveryMode.NON_PERSISTENT(最多被传输一次)
JMSTimestamp: 提供者发送消息的时间, 由提供者设置
JMSExpiration: 消息失效的时间, 是发送方法的生存时间和当前时间值的和, 0表明消息不会过期
JMSPriority: 由提供者设置, 0最低, 9最高
JMSCorrelationID: 用来链接响应消息和请求消息, 由发送消息的JMS程序设置
JMSReplyTo: 请求程序用它来指出回复消息应发送的地方
JMSType: JMS程序用来指出消息的类型
JMSRedelivered: 消息被过早的发送给了JMS程序, 程序不知道消息的接受者是谁
Properties: 给消息提供可选标题字段的实用工具
JMSXUserID: 发送消息的用户的身份
JMSXAppID: 发送消息的应用程序的身份
JMSXDeliveryCount: 尝试发送消息的次数
JMSXGroupID: 该消息所属的消息组的身份
JMSXGroupSeq: 该消息在消息组中的序号
JMSXProducerTxID: 生成该消息的事物的身份
JMSXConsumerTxID: 使用该消息的事物的身份
JMSXRcvTimestamp: JMS将消息发送给客户的时间
body: 发送到接受应用程序的内容, 每个消息接口都专用于它所支持的内容类型
StreamMessage: 提供一组Java原始值, 这些值是通过标准流操作按顺序来填充和读取的
MapMessage: 包含一组名-值对
TextMessage: 包含一个String
ObjectMessage: 包含一个Serializable Java对象
BytesMessage: 包含一些未解释字节, 允许对正文进行编码来匹配现有的格式
细节描述
事务
Session 可控制事务, 创建Session时将他标注为transacted
确认
确认是通知提供者已经成功接收到消息的一种机制。
如果被处理的是接受消息的Session, 则自动确认
Session创建时指定确认类型
Session.DUPS_OK-ACKNOWLEDGE: 消息发送的延迟确认, 只有在预计和处理重复消息时使用
Session.AUTO_ACKNOWKEDGE: 完成接受消息的方法是自动确认消息的发送
Session.CLIENT_ACKNOWLEDGE: 调用Message的acknowledge()方法显示确认消息的发送
消息选择
利用 Message Selector机制, 对收到的消息进行过滤和分类