你真正了解过Java消息服务应用程序接口(JMS)吗?

Java消息服务(JMS)API是Java平台用于异步通信的接口,旨在提高企业应用的可移植性和功能。JMS支持点对点和发布/订阅两种消息风格,并提供了不同版本的接口,包括标准API和简化API,便于发送和接收消息。

了解JMS规范

Java消息服务(Java Message Service,JMS)应用程序接口,是一个Java平台中关于面向消息中间件的API,用于在两个应用程序之间或分布式系统中发送消息,进行异步通信。JMS是一个与具体平台无关的API,绝大多数面向消息中间件提供商都对JMS提供支持。

JMS的目标包括以下4点。

·包含实现复杂企业应用所需要的功能特性。

·定义了企业消息产品概念和功能的一组通用集合。

·最小化这些Java程序员必须学习以使用企业消息产品的概念集合。

·最大化消息应用的可移植性。

JMS消息风格

JMS支持企业消息产品提供两种主要的消息风格。

·点对点:如图7-8所示,点对点风格允许一个客户端通过一个叫“消息队列”的中间抽象发送一个消息给另一个客户端。发送消息的客户端将一个消息发送到指定的队列中,接收消息的客户端从这个队列中抽取消息。

·发布/订阅:如图7-9所示,发布/订阅风格允许一个客户端通过一个叫“主题”的中间抽象发送一个消息给多个客户端。发送消息的客户端将一个消息发布到指定的主题中,然后这个消息将被投递到所有订阅了这个主题的客户端。

你真正了解过Java消息服务应用程序接口(JMS)吗?

图7-8 点对点风格

你真正了解过Java消息服务应用程序接口(JMS)吗?

图7-9 发布/订阅风格

 JMS接口

由于历史的原因,JMS提供了3组用于发送和接收消息的接口。

·JMS 1.0定义了两个特定领域相关的API,一个用于点对点的消息处理,另一个用于发布/订阅的消息处理。尽管由于向后兼容,这些接口一直被保留在JMS中,但是在以后的API中应该考虑被废弃掉。

·JMS 1.1引入了一组新的统一的API,可以同时用于点对点和发布/订阅消息模式。这也被称作标准API。

·JMS 2.0引入了一组简化API,它拥有标准API的全部特性,同时接口更少、使用更方便。以上每组API提供一组不同的接口集合,用于连接到JMS提供者、发送和接收消息。因此,它们共享一组代表消息、消息目的地和其他各方面功能特性的通用接口。

下面是使用标准API来发送消息的例子。

@Resource(lookup = "jms/connectionFactory ")
ConnectionFactory connectionFactory;
@Resource(lookup="jms/inboundQueue")
Queue inboundQueue;
public void sendMessageOld (String payload) throws JMSException{
try (Connection connection = connectionFactory.createConnection()) {
Session session = connection.createSession();
MessageProducer messageProducer =
session.createProducer(inboundQueue);
TextMessage textMessage =
session.createTextMessage(payload);
messageProducer.send(textMessage);
}
}

下面是使用简化API来发送消息的例子。

@Resource(lookup = "jms/connectionFactory")
ConnectionFactory connectionFactory;
@Resource(lookup="jms/inboundQueue")
Queue inboundQueue;
public void sendMessageNew (String payload) {
try (MessagingContext context = connectionFactory.createMessagingContext();){
context.send(inboundQueue,payload);
}
}

所有的接口都在javax.jms包下。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值