为了账号安全,请及时绑定邮箱和手机立即绑定

请问一下,同样的代码,启动时消费者没有连接上MQ服务器如何解决

我用的配置文件是yml形式,生产者那边配置没问题,可以正常连接服务器并发送消息。

消费者这边一样的,并且可以正常启动SpringBootApplication,但是在控制台中rabbitConnectionFactory已经注册了,之后却没有连接服务器的操作,同时控制台输出也为空,没有进入Receiver类。以下是控制台输出,Receiver类和yml配置文件,请问一下是哪里没有配置正确。

https://img1.sycdn.imooc.com//5bc6e1800001f49117250123.jpg

application.yml
#rabbitmq基础配置
spring:
  rabbitmq:
    addresses: 127.0.0.1:5672
    username: guest
    password: guest
    virtual-host: /
    connection-timeout: 15000

#rabbitmq消费者配置
    listener:
      simple:
        concurrency: 5
        max-concurrency: 10
        acknowledge-mode: manual
        prefetch: 1

  http:
    encoding: UTF-8

  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8
    default-property-inclusion: non_null

server:
  servlet:
    context-path: /
  port: 8002
@Component
public class OrderReceiver {
    //Rabbit以注解的形式进行监听
    @RabbitListener(
            bindings = @QueueBinding(
                    value = @Queue(value = "order-queue", durable = "true"),
                    exchange = @Exchange(value = "order-exchange" , type = "topic"),
                    key = "order.#"
            )
    )
    @RabbitHandler
    public void onOrderMsg(@Payload Order order , @Headers Map<String,Object> headers, Channel channel) throws IOException {
        //消费者操作
        System.err.println("消费者活动");
        System.out.println("订单ID: " + order.getId());
        Long deliveryTag = (Long) headers.get(AmqpHeaders.DELIVERY_TAG);
        //手工模式,响应ACK
        channel.basicAck(deliveryTag, false);
    }


正在回答

2 回答

已经连接了MongoDB,不缺。exit

0 回复 有任何疑惑可以回复我~

问题大致解决,参考了楼上朋友出现的问题。我用的idea,按照视频上那样把SpringBoot入口包和项目的包同级放的话,就不会自动调用到项目包中的bean,把项目包放在入口包的子级以后,虽然还有报错,但是已经可以连上MQ服务器了。

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

请问一下,同样的代码,启动时消费者没有连接上MQ服务器如何解决

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信