ActiveMQ系列—JMS规范

来源:互联网 发布:成都java培训费用多少 编辑:程序博客网 时间:2024/06/05 19:29

JMS不是消息队列,更不是某种消息队列协议。JMS是Java消息服务接口,是一套规范的JAVA API 接口。这套规范接口由SUN提出,并在2002年发布JMS规范的Version 1.1版本。JMS和消息中间件厂商无关,既然是一套接口规范,就代表这它需要各个厂商进行实现。好消息是,大部分消息中间件产品都支持JMS 接口规范。也就是说,您可以使用JMS API来连接Stomp协议的产品(例如ActiveMQ)。就像您可以使用JDBC API来连接ORACLE或者MYSQL一样。

部分网络上的资料都介绍JMS是一个消息队列,这个说法是错误的,会误导读者。难道你能说JDBC是数据库?

当然,这些具体实现JMS规范的JAVA API都是由具体的中间件厂商提供的。下面一段代码演示了如何使用JMS建立与ActiveMQ的连接:

import javax.jms.Connection;import javax.jms.Destination;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;/** * 测试使用JMS API连接ActiveMQ */public class JMSProducer {    /**     * 由于是测试代码,这里忽略了异常处理。 正是代码可不能这样做     */    public static void main(String[] args) throws Exception {        // 定义JMS-ActiveMQ连接信息        ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616", "username", "password");        Session session = null;        Destination sendQueue;        Connection connection = null;        // 进行连接        connection = connectionFactory.createConnection();        connection.start();        // 建立会话        session = connection.createSession(true, Session.SESSION_TRANSACTED);        // 建立queue(当然如果有了就不会重复建立)        sendQueue = session.createQueue("");        // 建立消息发送者对象        MessageProducer sender = session.createProducer(sendQueue);        TextMessage outMessage = session.createTextMessage();        outMessage.setText("这是发送的消息内容");        // 发送(JMS是支持事务的)        sender.send(outMessage);        session.commit();        // 关闭        sender.close();        connection.close();        connectionFactory.close();    }}

这里,再给各位读者一个官方文档。这个官方文档用于描述ActiveMQ消息中间件中实现的AMQP协议信息转换为JMS服务接口能够识别的数据信息(请仔细理解这句话黑体字部分的描述)。http://activemq.apache.org/amqp.html

原创粉丝点击