ActiveMQ简单封装

来源:互联网 发布:苹果双系统切换回mac 编辑:程序博客网 时间:2024/04/28 21:07

听说消息中间件挺重要的,今天简单看了下activeMQ,感觉挺有意思,简单封装了一下,做个笔记。

1、先要下载activeMQ,下载地址:http://activemq.apache.org/activemq-5143-release.html

2、下载下来之后,进行解压,进入到activeMQ\apache-activemq-5.14.3-bin\apache-activemq-5.14.3\bin根据自己电脑系统,启动不通的服务。我的64位,启动如图这里写图片描述

3,启动之后,简单写一个java例子。

4、封装成工具类,不知道这样封装行不行,先记下来,以后再改,代码如下

package util;/** * @author pand * 主要对activeMQ简单的封装 */import java.io.Serializable;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.MessageProducer;import javax.jms.ObjectMessage;import javax.jms.Session;import org.apache.activemq.ActiveMQConnectionFactory;public class ActiveMQutil {    private static ActiveMQutil activeMQutil = null;    static {        activeMQutil = new ActiveMQutil();    }    private ActiveMQutil(){}    public static ActiveMQutil getActiveMQutil() {        return activeMQutil;    }    private ConnectionFactory connectionFactory = null;    private Connection connection = null;    private Session session = null;    private Destination destination = null;    private MessageProducer messageProducer = null;    private MessageConsumer messageConsumer = null;    /**     * 初始化链接工厂和链接     * @param userName     * @param passWord     * @param url     */    public void setConnectionFactory(String userName, String passWord, String url){        connectionFactory = new ActiveMQConnectionFactory(userName, passWord, url);        try {            connection = connectionFactory.createConnection();        } catch (JMSException e) {            e.printStackTrace();        }    }    /**     * 消息中间件发送消息方法     * @param queueName 队列名称     * @param serializable 发送消息序列化内容     */    public void setProducerP2p(String queueName, Serializable serializable){        try {            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);            destination = session.createQueue(queueName);            messageProducer = session.createProducer(destination);            sendMessage(session, messageProducer, serializable);            session.commit();        } catch (JMSException e) {            e.printStackTrace();        } finally{            closeConnection(connection);        }    }    /**     * 发送序列化的数据     * @param session session     * @param producer 消息生产者     * @param serializable 发送消息序列化内容     */    public void sendMessage(Session session, MessageProducer producer, Serializable serializable){        try {            ObjectMessage objectMessage = session.createObjectMessage(serializable);            producer.send(objectMessage);        } catch (JMSException e) {            e.printStackTrace();        }    }    /**     * 消息中间件接收消息方法     * @param queueName 队列名称     */    public void setCustomerP2p(String queueName){        try {            connection.start();            session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);            destination = session.createQueue(queueName);            messageConsumer = session.createConsumer(destination);            messageConsumer.setMessageListener(new ActiveMQListener());        } catch (JMSException e) {            e.printStackTrace();        }    }    /**     * 订阅模式发送消息方法封装     * @param queueName 订阅名称     * @param serializable 发送订阅序列化消息     */    public void setProducerTop(String queueName, Serializable serializable){        try {            session = connection.createSession(true, Session.AUTO_ACKNOWLEDGE);            destination = session.createTopic(queueName);            messageProducer = session.createProducer(destination);            sendMessage(session, messageProducer, serializable);            session.commit();        } catch (JMSException e) {            e.printStackTrace();        } finally{            closeConnection(connection);        }    }    public void setCustomerTop(String queueName){        try {            connection.start();            session = connection.createSession(Boolean.FALSE, Session.AUTO_ACKNOWLEDGE);            destination = session.createTopic(queueName);            messageConsumer = session.createConsumer(destination);            messageConsumer.setMessageListener(new ActiveMQListener());        } catch (JMSException e) {            e.printStackTrace();        }    }    /**     * 关闭链接     * @param connection 链接     */    public void closeConnection(Connection connection){        if(connection != null){            try {                connection.close();            } catch (JMSException e) {                e.printStackTrace();            }        }    }}

5、监听类(简单写了一下)

package util;import javax.jms.Message;import javax.jms.MessageListener;import javax.jms.ObjectMessage;public class ActiveMQListener implements MessageListener{    @Override    public void onMessage(Message message) {        try {            System.out.println(((ObjectMessage)message));        } catch (Exception e) {            e.printStackTrace();        }    }}

完整小例子下载:https://github.com/lesserPanda/ActiveMQ

0 0
原创粉丝点击