关于SpringCloud整合RabbitMQ的应用详解(ack,限流,幂等)

时间:2025-05-11 07:31:57
package org.example.rabbit.config; import org.springframework.amqp.core.Binding; import org.springframework.amqp.core.BindingBuilder; import org.springframework.amqp.core.DirectExchange; import org.springframework.amqp.core.Queue; import org.springframework.amqp.core.TopicExchange; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class DirectRabbitConfig { //队列 起名:TestDirectQueue // @Bean // public Queue TestDirectAQueue() { // // durable:是否持久化,默认是false,持久化队列:会被存储在磁盘上,当消息代理重启时仍然存在,暂存队列:当前连接有效 // // exclusive:默认也是false,只能被当前创建的连接使用,而且当连接关闭后队列即被删除。此参考优先级高于durable // // autoDelete:是否自动删除,当没有生产者或者消费者使用此队列,该队列会自动删除。 // // return new Queue("TestDirectQueue",true,true,false); // // //一般设置一下队列的持久化就好,其余两个就是默认false // return new Queue("",false); // } // // @Bean // Queue queueDirectBName() { // return new Queue("",false); // } // // /** // * Direct交换机 起名:TestDirectExchange // * 直连交换机:Direct exchange // * 扇形交换机:Fanout exchange // * 主题交换机:Topic exchange // * 首部交换机:Headers exchange // * @return // */ // @Bean // DirectExchange bindingTestDirectExchange() { // // return new DirectExchange("TestDirectExchange",true,true); // return new DirectExchange("TestDirectExchange",true,false); // } // // //绑定 将队列和交换机绑定, 并设置用于匹配键:TestDirectRouting // // @Bean // Binding bindingDirectA() { // return (TestDirectAQueue()).to(bindingTestDirectExchange()).with("TestDirectRoutingA"); // } // @Bean // Binding bindingDirectB() { // return (TestDirectAQueue()).to(bindingTestDirectExchange()).with("TestDirectRoutingB"); // } // // // @Bean // DirectExchange lonelyDirectExchange() { // return new DirectExchange("lonelyDirectExchange"); // } //创建队列 @Bean public Queue queueMessage() { return new Queue(""); } //创建队列 @Bean public Queue queueMessages() { return new Queue(""); } //创建交换器 @Bean TopicExchange exchange() { return new TopicExchange("topicExchange"); } //对列绑定并关联到ROUTINGKEY @Bean Binding bindingExchangeMessage(Queue queueMessage, TopicExchange exchange) { return BindingBuilder.bind(queueMessage).to(exchange).with(""); } //对列绑定并关联到ROUTINGKEY @Bean Binding bindingExchangeMessages(Queue queueMessages, TopicExchange exchange) { return BindingBuilder.bind(queueMessages).to(exchange).with("topic.#");//*表示一个词,#表示零个或多个词 } }