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();
        }
    }

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

     

  • 相关阅读:
    Maven关于web.xml中Servlet和Servlet映射的问题
    intellij idea的Maven项目运行报程序包找不到的错误
    修改Maven项目默认JDK版本
    刷题15. 3Sum
    刷题11. Container With Most Water
    刷题10. Regular Expression Matching
    刷题5. Longest Palindromic Substring
    刷题4. Median of Two Sorted Arrays
    刷题3. Longest Substring Without Repeating Characters
    刷题2. Add Two Numbers
  • 原文地址:https://www.cnblogs.com/sunang/p/12320746.html
Copyright © 2011-2022 走看看