ActiveMQ 接受不到消息

接受消息的代码

ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(
                ActiveMQConnectionFactory.DEFAULT_USER,
                ActiveMQConnectionFactory.DEFAULT_PASSWORD,
                "tcp://127.0.0.1:61616");

        activeMQConnectionFactory.setTrustAllPackages(true);
        Connection connection = activeMQConnectionFactory.createConnection();

        //false -- 关闭事务;Session.AUTO_ACKNOWLEDGE -- 手动确认
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        Queue queue = session.createQueue("user");
        MessageConsumer consumer = session.createConsumer(queue);
        consumer.setMessageListener(message -> {
            try {
                String text = ((TextMessage) message).getText();
                System.out.println(text);
            } catch (JMSException e) {
                e.printStackTrace();
            }
		});

运行后发现,一直在阻塞,接收不到消息
检查代码后发现
需要在接受前调用connection.start()方法

ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(
                ActiveMQConnectionFactory.DEFAULT_USER,
                ActiveMQConnectionFactory.DEFAULT_PASSWORD,
                "tcp://127.0.0.1:61616");

        activeMQConnectionFactory.setTrustAllPackages(true);
        Connection connection = activeMQConnectionFactory.createConnection();

        //false -- 关闭事务;Session.AUTO_ACKNOWLEDGE -- 手动确认
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);

        connection.start();
        Queue queue = session.createQueue("user");
        MessageConsumer consumer = session.createConsumer(queue, "type='C'");

        consumer.setMessageListener(message -> {
            try {
                String text = ((TextMessage) message).getText();
                System.out.println(text);
            } catch (JMSException e) {
                e.printStackTrace();
            }
        });
posted @ 2022-03-07 18:04  叕叕666  阅读(293)  评论(0)    收藏  举报