zoukankan      html  css  js  c++  java
  • ActiveMQ 学习

    1、apache-activemq-5.9.0-bin

    image

    2、运行

    image

    3、登陆 密码admin/admin

    image

    4、创建Queue

    image

    5、信息发送方

    package com.liubin.activemq;

    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.DeliveryMode;
    import javax.jms.Destination;
    import javax.jms.MessageProducer;
    import javax.jms.Session;
    import javax.jms.TextMessage;

    import org.apache.activemq.ActiveMQConnection;
    import org.apache.activemq.ActiveMQConnectionFactory;
    /*
    * ACtiveMQ 信息发送端
    */
    public class Sender {
       
        private static final int SEND_NUMBER = 5;

        public static void main(String[] args) {
            // ConnectionFactory :连接工厂,JMS 用它创建连接
            ConnectionFactory connectionFactory;
            // Connection :JMS 客户端到JMS Provider 的连接
            Connection connection = null;
            // Session: 一个发送或接收消息的线程
            Session session;
            // Destination :消息的目的地;消息发送给谁.
            Destination destination;
            // MessageProducer:消息发送者
            MessageProducer producer;
            // TextMessage message;
            // 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
            connectionFactory = new ActiveMQConnectionFactory(
                    ActiveMQConnection.DEFAULT_USER,
                    ActiveMQConnection.DEFAULT_PASSWORD,
                    "tcp://localhost:61616");
            try {
                // 构造从工厂得到连接对象
                connection = connectionFactory.createConnection();
                // 启动
                connection.start();
                // 获取操作连接
                session = connection.createSession(Boolean.TRUE,
                        Session.AUTO_ACKNOWLEDGE);
                // 获取session注意参数值是一个服务器的queue,须在在ActiveMq的console配置
                destination = session.createQueue("FirstQueue");
                // 得到消息生成者【发送者】
                producer = session.createProducer(destination);
                // 设置不持久化,此处学习,实际根据项目决定
                producer.setDeliveryMode(DeliveryMode.NON_PERSISTENT);
                // 构造消息,此处写死,项目就是参数,或者方法获取
                sendMessage(session, producer);
                session.commit();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    if (null != connection)
                        connection.close();
                } catch (Throwable ignore) {
                }
            }
        }

        public static void sendMessage(Session session, MessageProducer producer)
                throws Exception {
            for (int i = 1; i <= SEND_NUMBER; i++) {
                TextMessage message = session
                        .createTextMessage("ActiveMq 发送的消息" + i);
                // 发送消息到目的地方
                System.out.println("发送消息:" + "ActiveMq 发送的消息" + i);
                producer.send(message);
            }
        }
       
    }

    6、信息接收方

    package com.liubin.activemq;

    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.jms.MessageConsumer;
    import javax.jms.Session;
    import javax.jms.TextMessage;

    import org.apache.activemq.ActiveMQConnection;
    import org.apache.activemq.ActiveMQConnectionFactory;

    /*
    *ActiveMQ 信息接受者
    */
    public class Receiver {

         public static void main(String[] args) {
                // ConnectionFactory :连接工厂,JMS 用它创建连接
                ConnectionFactory connectionFactory;
                // Connection :JMS 客户端到JMS Provider 的连接
                Connection connection = null;
                // Session: 一个发送或接收消息的线程
                Session session;
                // Destination :消息的目的地;消息发送给谁.
                Destination destination;
                // 消费者,消息接收者
                MessageConsumer consumer;
                connectionFactory = new ActiveMQConnectionFactory(
                        ActiveMQConnection.DEFAULT_USER,
                        ActiveMQConnection.DEFAULT_PASSWORD,
                        "tcp://localhost:61616");
                try {
                    // 构造从工厂得到连接对象
                    connection = connectionFactory.createConnection();
                    // 启动
                    connection.start();
                    // 获取操作连接
                    session = connection.createSession(Boolean.FALSE,
                            Session.AUTO_ACKNOWLEDGE);
                    // 获取session注意参数值是一个服务器的queue,须在在ActiveMq的console配置
                    destination = session.createQueue("FirstQueue");
                    consumer = session.createConsumer(destination);
                    while (true) {
                        //设置接收者接收消息的时间,为了便于测试,这里谁定为100s
                        TextMessage message = (TextMessage) consumer.receive(100000);
                        if (null != message) {
                            System.out.println("收到消息" + message.getText());
                        } else {
                            break;
                        }
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    try {
                        if (null != connection)
                            connection.close();
                    } catch (Throwable ignore) {
                    }
                }
            }
    }

    7、信息发送接收状态

    image

  • 相关阅读:
    easyExcel入门
    UML-从需求到设计--迭代进化
    UML-操作契约总结
    102. Binary Tree Level Order Traversal
    98. Validate Binary Search Tree
    95. Unique Binary Search Trees II
    96. Unique Binary Search Trees
    94. Binary Tree Inorder Traversal
    84. Largest Rectangle in Histogram
    92. Reverse Linked List II
  • 原文地址:https://www.cnblogs.com/heidsoft/p/3453017.html
Copyright © 2011-2022 走看看