JMS消息系统:原理、组件与消息结构解析
1. JMS基础概念
1.1 主题命名与可移植性
在JMS(Java Message Service)中,主题(Topic)的名称标识是物理主题的标识符。不同的供应商可能采用不同的主题命名系统,例如有的供应商使用点分隔(.)的主题名称,如 “oreilly.jms.chat”,而有的则使用类似LDAP命名的系统,如 “o=oreilly,cn=chat”。直接使用主题名称会导致客户端应用在不同品牌的JMS服务器之间缺乏可移植性。而Topic对象可以向客户端隐藏主题名称,从而提高客户端的可移植性。
1.2 主题发布者(TopicPublisher)
主题发布者用于向消息服务器上的特定主题发送消息。以下是创建主题发布者的示例代码:
// 查找JMS主题
Topic chatTopic = (Topic)ctx.lookup(topicName);
// 创建JMS发布者
TopicPublisher publisher = pubSession.createPublisher(chatTopic);
在聊天示例中,当用户在命令行输入文本时,会调用 writeMessage
方法,使用主题发布者将消息发送到主题:
/* 创建并使用发布者发送消息 */
protected void writeMessage(String text) throws JMSException {
TextMes