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

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

     

  • 相关阅读:
    621
    Java里的日期和时间学习
    [置顶] 宏扩展和参数扫描
    android 按字母搜索
    使用Eclipse EE开发web项目
    免解压版的Mysql的启动脚本,并且执行导入(windows)
    高焕堂《android从程序员到架构师之路》 YY讲坛直面大师学习架构设计
    Android 计时与倒计时
    poj 1564 Sum It Up | zoj 1711 | hdu 1548 (dfs + 剪枝 or 判重)
    字符型驱动程序的结构框架
  • 原文地址:https://www.cnblogs.com/sunang/p/12320746.html
Copyright © 2011-2022 走看看