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

  • 相关阅读:
    HttpClient
    Android子线程访问网络
    PhoneURLConnectGEt
    PhoneHttpGet
    PhoneNote
    SQLite
    书单
    通过Web预测网页出版日期的学习
    LeetCode-Maximum Subarray[dp]
    LeetCode-Triangle[dp]
  • 原文地址:https://www.cnblogs.com/heidsoft/p/3453017.html
Copyright © 2011-2022 走看看