zoukankan      html  css  js  c++  java
  • ActiveMQ学习笔记#1

    #0 下载安装activemq 访问控制台http://localhost:8161/ 默认用户名密码admin/admin

     #1 创建队列消息生产者

    创建一个maven工程

        <dependencies>
            <dependency>
                <groupId>org.apache.activemq</groupId>
                <artifactId>activemq-all</artifactId>
                <version>5.15.11</version>
            </dependency>
        </dependencies>

    新建一个生产者类,activemq实例默认端口61616

    import org.apache.activemq.ActiveMQConnectionFactory;
    
    import javax.jms.*;
    
    /**
     * Created by B on 2020/2/17.
     */
    public class Producer {
        public static void main(String args[]) throws JMSException {
            //默认实例地址
            String brokerURL = "tcp://127.0.0.1:61616";
            // 1、创建一个连接工厂对象,需要指定服务的ip及端口。
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
            // 2、使用工厂对象创建一个Connection对象。
            Connection connection = connectionFactory.createConnection();
            // 3、开启连接,调用Connection对象的start方法。
            connection.start();
            // 4、创建一个Session对象。
            // 第一个参数:是否开启事务。如果true开启事务,第二个参数无意义。一般不开启事务false。
            // 第二个参数:应答模式。自动应答或者手动应答。一般自动应答。
            Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
            // 5、使用Session对象创建一个Destination对象。两种形式queue、topic
            Queue queue = session.createQueue("test-queue");
            // 6、使用Session对象创建一个Producer对象。
            MessageProducer producer = session.createProducer(queue);
            // 7、创建一个Message对象,可以使用TextMessage。
            TextMessage textMessage = session.createTextMessage("生产者生产的消息,编号是"+System.currentTimeMillis()); 
    System.out.println(
    "新发送一条信息到队列,消息:"+textMessage.getText());
    // 8、发送消息  
    producer.send(textMessage);
    // 9、关闭资源
    producer.close(); session.close(); connection.close(); } }

    运行

     查看控制台,此时显示队列中的消息统计情况,都还未被消费

    #2 新建一个消费者

    import org.apache.activemq.ActiveMQConnectionFactory;
    
    import javax.jms.*;
    import java.io.IOException;
    
    /**
     * Created by dell on 2020/2/17.
     */
    public class Consumer {
        public static void main(String args[]) throws JMSException, IOException {
            String brokerURL = "tcp://127.0.0.1:61616";
            ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(brokerURL);
            Connection connection = connectionFactory.createConnection();
            connection.start();
            Session session = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
            Queue queue = session.createQueue("test-queue");
            MessageConsumer consumer = session.createConsumer(queue);
            consumer.setMessageListener(new MessageListener() {
                @Override
                public void onMessage(Message message) {
                    if(message!=null && message instanceof TextMessage){
                        TextMessage textMessage = (TextMessage) message;
                        String text = null;
                        try {
                            text = textMessage.getText();
                        } catch (JMSException e) {
                            e.printStackTrace();
                        }
                        System.out.println("消费者消费队列的消息 消息为:"+text);
                    }
                }
            });
            // 等待接收消息
            System.in.read();
            // 关闭资源
            consumer.close();
            session.close();
            connection.close();
        }
    }

    运行 显示之前生产的消息被消费

     

  • 相关阅读:
    Linux学习之路——ls命令及文件权限
    解析规范格式的日志文件至List中
    Flask
    GIT和github
    常见的面试题
    python—面向对象的封装
    作业—数据类型8.20
    练习—8.17 while循环
    s7day2
    oracle 开窗分析函数和树形结构
  • 原文地址:https://www.cnblogs.com/sunang/p/12320746.html
Copyright © 2011-2022 走看看