• [转]Hello ActiveMQ


    转自http://lavasoft.blog.51cto.com/62575/190815

    下面是ActiveMQ5.2的一个最简单例子!
    环境还是apache-activemq-5.2.0-bin.zip,需要注意的是,开发时候,要将apache-activemq-5.2.0-bin.zip解压缩后里面的activemq-all-5.2.0.jar包加入到classpath下面,这个包包含了所有jms接口api的实现。
     
     
    import org.apache.activemq.ActiveMQConnection;
    import org.apache.activemq.ActiveMQConnectionFactory;

    import javax.jms.*;

    /**
    * 消息的生产者(发送者)
    *
    * @author leizhimin 2009-8-12 11:41:20
    */

    public class JmsSender {
            public static void main(String[] args) throws JMSException {
                    // ConnectionFactory :连接工厂,JMS 用它创建连接
                    ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(
                                    ActiveMQConnection.DEFAULT_USER,
                                    ActiveMQConnection.DEFAULT_PASSWORD,
                                    "tcp://192.168.14.117: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("");
            }
    }
     
    import org.apache.activemq.ActiveMQConnection;
    import org.apache.activemq.ActiveMQConnectionFactory;

    import javax.jms.*;

    /**
    * 消息的消费者(接受者)
    *
    * @author leizhimin 2009-8-12 11:41:33
    */

    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.14.117: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();
            }
    }
     
     
    启动ActiveMQ,然后开始执行:
    先运行发送者,连续运行了三次,最后一次控制台输出:


    Process finished with exit code 0
     
    后运行接受者,输出结果:
    收到消息Hello ActiveMQ!
    收到消息Hello ActiveMQ!
    收到消息Hello ActiveMQ!

    Process finished with exit code 0
     
    注意:
    其中的端口61616是ActiveMQ默认的配置,在activemq.xml中,
                    <!-- The transport connectors ActiveMQ will listen to -->
                    <transportConnectors>
                            <transportConnector name="openwire" uri="tcp://localhost:61616" discoveryUri="multicast://default"/>
                            <transportConnector name="ssl" uri="ssl://localhost:61617"/>
                            <transportConnector name="stomp" uri="stomp://localhost:61613"/>
                            <transportConnector name="xmpp" uri="xmpp://localhost:61222"/>
                    </transportConnectors>
    ,建议不要改动,都用这个端口多好,就像ftp都用21端口,也没错。
     
     
    这是官方的HelloWorld例子,不过看着不顺眼:
     
    ----------------------
    推荐一些文章:
  • 相关阅读:
    [BZOJ 4001] [TJOI 2015] 概率论
    【计算几何】推导坐标的旋转公式
    【动态规划学习】01背包
    (坑)网络流24题
    bzoj2442(单调队列优化)
    [lydsy2005]能量采集
    主席树
    [noi2005][treap]序列维护
    [Apio2012][Treap]派遣
    [CodeVs][1514][Treap][书架]
  • 原文地址:https://www.cnblogs.com/jjj250/p/1787149.html
Copyright © 2020-2023  润新知