spring 引导发布者发送消息时,rabbitmq 不会自动创建队列

rabbitmq is not creating queue automatically when spring boot publisher send msg

当 spring 引导发布者发送消息时,rabbitmq 没有自动创建队列 ... 我是这样做的,所以不需要手动配置 这是我的配置 ///////当 spring 引导发布者发送消息时,rabbitmq 不会自动创建队列 ... 我是这样做的,所以不需要手动配置 这是我的配置

package com.hariri_stocks.MQ;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.Queue;
import org.springframework.amqp.core.TopicExchange;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.amqp.support.converter.MessageConverter;
import org.springframework.context.annotation.Bean;


public class msgConfiguration {

    
    public static final String ROUTING_KEY1 = "routingKey1";
    public static final String STOCKS_EXCHANGE = "stocks_exchange";
    public static final String STOCKS_QUEUE = "stocks_queue";
    @Bean
    public Queue queue() {
        return new Queue(STOCKS_QUEUE , false);
    }
    @Bean
    public TopicExchange exchange() {
        return new TopicExchange(STOCKS_EXCHANGE );
    }
    @Bean
    public Binding binding()
    {
        return BindingBuilder.bind(queue()).to(exchange()).with(ROUTING_KEY1);
    }
    @Bean
    public MessageConverter converter()
    {
        return new Jackson2JsonMessageConverter();
    }

    @Bean
    public AmqpTemplate template(ConnectionFactory cf) {
        final RabbitTemplate rt = new RabbitTemplate(cf);
        rt.setMessageConverter(converter());
        return rt;
    }
}

package com.hariri_stocks.MQ;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class Givver {

    @Autowired
    private RabbitTemplate template;
    
    @GetMapping("/msg")
    public String send() {
        msgStatus m = new msgStatus("ok","damn");
        template.convertSendAndReceive(msgConfiguration.STOCKS_EXCHANGE, msgConfiguration.ROUTING_KEY1,m);
        return "ok";
    }
}

enter image description here

spring.datasource.url=jdbc:mysql://localhost:3306/hariri_stocks
spring.datasource.username=root
spring.datasource.password=

spring.thymeleaf.enabled=true
spring.thymeleaf.check-template-location=true

spring.jpa.hibernate.ddl-auto=update
spring.jpa.generate-ddl=true 
spring.jpa.show-sql=true

server.port=9091
spring.application.name=hariri

Class msgConfiguration 需要用 @Configuration 注释才能将这些 bean 添加到应用程序上下文中。

您也不需要 template bean - Spring 引导会自动将转换器 bean 连接到其自动配置的 RabbitTemplate.