ActiveMQ_hello word

来源:互联网 发布:加内特的生涯数据 编辑:程序博客网 时间:2024/06/01 10:17

看看JMS的东西,IT界入门的东西好像都可以用一个hello word来开路,现在也抄个ActiveMQ的hello world代码,看看JMM是怎么使用的。

JMS使用分为2部分,一个生产者,负责上传数据到JMS消息中间件中;一个是消费者,负责从JMS中取数据。

无论是写生产者还是消费者代码都需要引入activemq-all-5.10-SNAPSHOT.jar这个jar包。

我的实验环境是ActiveMQ5.10。

一、生产者代码

package com.activemq.producter;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.DeliveryMode;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageProducer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;/** * ActiveMQ发送类 * <功能详细描述> *  * @author  Administrator * @version  [版本号, 2014年7月27日] * @see  [相关类/方法] * @since  [产品/模块版本] */public class MessageProducter{        /*     * @param args     * @see [类、类#方法、类#成员]     */    public static void main(String[] args) throws JMSException     {     // ConnectionFactory :连接工厂,JMS 用它创建连接        ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(                        ActiveMQConnection.DEFAULT_USER,                        ActiveMQConnection.DEFAULT_PASSWORD,                        "tcp://192.168.197.130:61616");        //JMS 客户端到JMS Provider 的连接        Connection connection = connectionFactory.createConnection();        connection.start();        // Session: 一个发送或接收消息的线程        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);        // Destination :消息的目的地;消息发送给谁.        // 获取session注意参数值my-queue是Query的名字        Destination destination = session.createQueue("my-queue");        // MessageProducer:消息生产者        MessageProducer producer = session.createProducer(destination);        //设置不持久化        producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);        //发送一条消息        sendMsg(session, producer);        session.commit();        connection.close();     }        /**     * 在指定的会话上,通过指定的消息生产者发出一条消息     *     * @param session    消息会话     * @param producer 消息生产者     */    public static void sendMsg(Session session, MessageProducer producer) throws JMSException {            //创建一条文本消息            TextMessage message = session.createTextMessage("Hello ActiveMQ!");            //通过消息生产者发出消息            producer.send(message);            System.out.println("");    } }

二、消费者代码

package com.activemq.reciever;import javax.jms.Connection;import javax.jms.ConnectionFactory;import javax.jms.Destination;import javax.jms.JMSException;import javax.jms.MessageConsumer;import javax.jms.Session;import javax.jms.TextMessage;import org.apache.activemq.ActiveMQConnection;import org.apache.activemq.ActiveMQConnectionFactory;public class JmsReceiver{        public static void main(String[] args)        throws JMSException    {        // ConnectionFactory :连接工厂,JMS 用它创建连接        ConnectionFactory connectionFactory =            new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER, ActiveMQConnection.DEFAULT_PASSWORD,                "tcp://192.168.197.130:61616");        //JMS 客户端到JMS Provider 的连接        Connection connection = connectionFactory.createConnection();        connection.start();        // Session: 一个发送或接收消息的线程        Session session = connection.createSession(Boolean.TRUE, Session.AUTO_ACKNOWLEDGE);        // Destination :消息的目的地;消息发送给谁.        // 获取session注意参数值xingbo.xu-queue是一个服务器的queue,须在在ActiveMq的console配置        Destination destination = session.createQueue("my-queue");        // 消费者,消息接收者        MessageConsumer consumer = session.createConsumer(destination);        while (true)        {            TextMessage message = (TextMessage)consumer.receive(1000);            if (null != message)                System.out.println("收到消息:" + message.getText());            else                break;        }        session.close();        connection.close();            }    }

先执行生产者代码,往JMS消息中间件中上传数据,再执行消费者代码,从JMS消息中间件中取走数据。

0 0
原创粉丝点击