activeMQ能发送消息,但是不能获取消息 Received a message on a connection which is not yet started.

刚才好不容易能发送消息了,好家伙获取消息又获取不到了!搞了半天报了WARN警告

Received a message on a connection which is not yet started.

一开始我是不以为然的,说什么我获取消息时没有获取启动连接?

然后百度了半天,很少有我这样的错,无意间看了人家的代码才发现!人家connection有start!

我也是醉了,毕竟很久没有手写这种连接了!

而且前面的生产者也没有写start,但是能发送!

鬼知道!生产者可以,消费者不可以,所以才没有头绪的小马虎BUG!

翻开了教学视频发现,人家生产者也是有些start的!但是我没注意,是想着步骤打代码,没有仔细一一对比!

如果你也因为马虎遇到这个错,记得把连接先启动!

package com.atguigu.activemq.queue;

import org.apache.activemq.ActiveMQConnectionFactory;

import javax.jms.*;

public class JmsConsumer {
    public static final String DEFAULT_BROKER_URL="tcp://192.168.133.130:61616";//MQ地址
    public static final String QUEUE_NAME="queue1";//队列名称
    public static void main(String[] args) throws JMSException {
        //获取MQ连接工厂,记得填自定义的地址!因为没有修改账号和密码,否则需要三参数构造
        ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory(DEFAULT_BROKER_URL);
        //通过工厂获取连接
        Connection connection = activeMQConnectionFactory.createConnection();
        //记得要启动连接啊!
        connection.start();
        //通过连接创建会话
        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
        //通过会话创建队列
        Queue queue = session.createQueue(QUEUE_NAME);
        //通过会话创建指定队列的消费者
        MessageConsumer messageConsumer = session.createConsumer(queue);
        while (true){
            System.out.println("进来了?");
            TextMessage receive = (TextMessage) messageConsumer.receive();
            if (null!=receive){
                System.out.println("获取到消息-------"+receive.getText());
            }else {
                break;
            }
        }
        messageConsumer.close();
        session.close();
        connection.close();
    }
}

版权声明:本文为weixin_45369440原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。