RabbitMQ在Spring Boot中的应用

📅 发布时间:2026/7/3 15:30:44 👁️ 浏览次数:
RabbitMQ在Spring Boot中的应用
备注本文章只用于记录学习笔记参考链接SpringBoot 整合 RabbitMQ快速入门【Java后端首选SpringBoot】第12站_哔哩哔哩_bilibili1.先在pom文件中添加依赖dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-amqp/artifactId /dependency2.在yml文件配置RabbitMQ的基础信息rabbitmq: host: localhost port: 5672 username: guest password: guest3.在config文件夹新建一个rabbitMQConfig类用于自定义JSON消息转换器4.定义交换机5.定义队列6.绑定关系import org.springframework.amqp.rabbit.core.Binding; import org.springframework.amqp.rabbit.core.BindingBuilder; import org.springframework.amqp.rabbit.core.DirectExchange; import org.springframework.amqp.rabbit.core.Queue; 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; import org.springframework.context.annotation.Configuration; Configuration public class RabbitMQConfig { //消息转换器 json public MessageConverter messageConverter (){ return new Jackson2JsonMessageConverter(); } Bean public RabbitTemplate rabbitTemplate (ConnectionFactory connectionFactory ,MessageConverter messageConverter){ RabbitTemplate rabbitTemplate new RabbitTemplate(connectionFactory); rabbitTemplate.setMessageConverter(messageConverter); return rabbitTemplate; } //定义交换机 Bean public DirectExchange directExchange() { return new DirectExchange(direct-exchange, true, false);//durable:是否持久化推荐为true, autoDelete:没有队列绑定时是否删除 } //定义队列 Bean public Queue payQueue() { return new Queue(payQueue, true, false, false);//durable:是否持久化, exclusive:是否独占(仅当前连接可用), autoDelete:无消费者后是否自动删除 } Bean public Queue smsQueue() { return new Queue(smsQueue, true, false, false); } Bean public Queue aIQueue() { return new Queue(aIQueue, true, false, false); } //绑定关系 队列绑定到交换机指定routingkey Bean public Binding bindPayQueue(Queue payQueue,DirectExchange directExchange){ return BindingBuilder.bind(PayQueue).to(directExchange).with(pay); } Bean public Binding bindSmsQueue(Queue smsQueue,DirectExchange directExchange){ return BindingBuilder.bind(smsQueue).to(directExchange).with(sms); } Bean public Binding bindAIQueue(Queue aIQueue,DirectExchange directExchange){ return BindingBuilder.bind(aIQueue).to(directExchange).with(ai); } }