SpringBoot整合rabbitMQ,啓動服務便創建交換機和隊列

1.啓動服務不默認先創建隊列的話,在啓動消費者時候,消費者服務監聽會找不到對應的隊列而報錯,啓動失敗

@Component
public class OrderRabbitMQConfig {

    @Autowired
    RabbitAdmin rabbitAdmin;

    /**
     * 派單隊列
     */
    public static final String ORDER_DIC_QUEUE = "order_dic_queue";
    /**
     * 補單對接
     */
    public static final String ORDER_CREATE_QUEUE = "order_create_queue";
    /**
     * 訂單交換機
     */
    private static final String ORDER_EXCHANGE_NAME = "order_exchange_name";

    /**
     * 定義派單隊列
     */
    @Bean
    public Queue directOrderDicQueue() {
        return new Queue(ORDER_DIC_QUEUE);
    }

    /**
     * 定義補派單隊列
     */
    @Bean
    public Queue directCreateOrderQueue() {
        return new Queue(ORDER_CREATE_QUEUE);
    }

    /**
     * 定義訂單交換機
     */
    @Bean
    DirectExchange directOrderExchange() {
        return new DirectExchange(ORDER_EXCHANGE_NAME);
    }

    /**
     * 派單隊列與交換機綁定
     */
    @Bean
    Binding bindingExchangeOrderDicQueue() {
        return BindingBuilder.bind(directOrderDicQueue()).to(directOrderExchange()).with("orderRoutingKey");
    }

    /**
     * 補單隊列與交換機綁定
     */
    @Bean
    Binding bindingExchangeCreateOrder() {
        return BindingBuilder.bind(directCreateOrderQueue()).to(directOrderExchange()).with("orderRoutingKey");
    }

    //創建初始化RabbitAdmin對象
    @Bean
    public RabbitAdmin rabbitAdmin(ConnectionFactory connectionFactory) {
        RabbitAdmin rabbitAdmin = new RabbitAdmin(connectionFactory);
        // 只有設置爲 true,spring 纔會加載 RabbitAdmin 這個類
        rabbitAdmin.setAutoStartup(true);
        return rabbitAdmin;
    }
    //創建交換機和對列
    @Bean
    public void createExchangeQueue (){
        rabbitAdmin.declareExchange(directOrderExchange());
        rabbitAdmin.declareQueue(directOrderDicQueue());
        rabbitAdmin.declareQueue(directCreateOrderQueue());
    }
    
}
#配置virtual-host虛擬主機
spring.rabbitmq.virtual-host=/zhang_rabbit
#ip地址
spring.rabbitmq.host=127.0.0.1
#用戶名  密碼
spring.rabbitmq.username=zhang
spring.rabbitmq.password=zhang
#連接端口號
spring.rabbitmq.port=5672

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章