RabbitMq生产者未使用队列如何自动创建队列

最近项目在进行rabbitMq项目集成时,出现一个其问题,在生产者启动后未生产的时候,消费者启动会报错404找不到队列,网站大部分文档都没有说清楚;补充一个作为记录

第一步:需要在生产者配置中显示声明RabbitAdmin

    @Bean
    public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
        rabbitAdmin.setAutoStartup(true);
        return rabbitAdmin;
    }

第二步:在Queue创建时显示声明

    @Bean
    public Queue initHighDataQueue() {
        Console.log("rabit生产者被声明");
        Queue queue = new Queue(MqQueueConst.HIGH_DATA_EXCHANGE, true, false, false);
        rabbitAdmin.declareQueue(queue);
        return queue;
    }

启动后即可在日志中看到如下结果:

2022-02-12 11:09:27.374 INFO  --- [           main] o.s.a.r.c.CachingConnectionFactory       : Attempting to connect to: [localhost:5672]
2022-02-12 11:09:27.451 INFO  --- [           main] o.s.a.r.c.CachingConnectionFactory       : Created new connection: rabbitConnectionFactory#5516ee5:0/SimpleConnection@63c66980 [delegate=amqp://cloud@127.0.0.1:5672/cloud, localPort= 38784]

完整代码如下:

import cn.hutool.core.lang.Console;
import com.scentralit.platform.sdk.constans.MqQueueConst;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitAdmin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RabitConfig {
    @Autowired
    private RabbitAdmin rabbitAdmin;

    @Bean
    public Queue initHighDataQueue() {
        Console.log("rabit生产者被声明");
        Queue queue = new Queue(MqQueueConst.HIGH_DATA_EXCHANGE, true, false, false);
        rabbitAdmin.declareQueue(queue);
        return queue;
    }

    @Bean
    public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
        rabbitAdmin.setAutoStartup(true);
        return rabbitAdmin;
    }
}

参考链接:【完美解决】SpringBoot整合rabbitmq “Failed to declare queue(s)“_shang_0122的博客-CSDN博客icon-default.png?t=M0H8https://blog.csdn.net/shang_0122/article/details/117404515

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以看出问题出在RabbitMQ生产者无法创建对象队列上。根据引用\[1\]中的代码,可以看到在RabbitConfig类中通过@Bean注解创建了一个RabbitAdmin对象,并且在initHighDataQueue方法中声明了一个队列。所以,要解决问题,需要确保以下几点: 1. 确保RabbitConfig类被正确地配置为@Configuration类,并且被正确地扫描到。 2. 确保RabbitAdmin对象被正确地注入到RabbitConfig类中。 3. 确保initHighDataQueue方法被正确地调用,并且队列被正确地声明。 另外,根据引用\[3\]中的代码,还需要在生产者配置中显示声明RabbitAdmin对象。所以,确保在生产者配置中添加以下代码: ```java @Bean public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) { RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory); rabbitAdmin.setAutoStartup(true); return rabbitAdmin; } ``` 通过以上步骤,应该能够解决rabbitmq生产者无法创建对象队列的问题。 #### 引用[.reference_title] - *1* *3* [RabbitMq生产者使用队列如何自动创建队列](https://blog.csdn.net/qq_27619637/article/details/122893801)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Spring项目整合 RabbitMQ消息队列,动态创建队列与交换机](https://blog.csdn.net/qq_40722827/article/details/125825983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值