今天学习了springboot整合RabbitMQ(direct模式)。
首先开启RabbitMQ服务,并导入相关依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency>
接下来做配置:
spring:
rabbitmq: host: localhost port: 5672
@Configuration public class RabbitConfigDirect { //创建队列 @Bean public Queue directQueue(){ return new Queue("direct_queue"); } @Bean public Queue directQueue2(){ return new Queue("direct_queue2"); } //创建交换机,直连交换机 @Bean public DirectExchange directExchange(){ return new DirectExchange("directExchange"); } //绑定队列和交换机,一个交换机可以绑定多个队列 @Bean public Binding bindingdirect(){ return BindingBuilder.bind(directQueue()).to(directExchange()).with("direct"); } @Bean public Binding bindingdirect2(){ return BindingBuilder.bind(directQueue2()).to(directExchange()).with("direct2"); } }
接下来具体应用:
//直连交换机模式 @Service public class MessageServiceRabbitmqDirectlmpl implements MessageService { @Autowired private AmqpTemplate amqpTemplate; @Override public void sendMessage(String id) { System.out.println("待发送短信的订单已纳入处理队列(rabbitmq direct),id: " + id); amqpTemplate.convertAndSend("directExchange","direct",id); //第一个参数交换机的名称,第二个参数绑定队列和交换机的名称,第三个参数是消息 } @Override public String doMessage() { return null; } }
//受到消息自动处理
@Component public class MessageListener { @RabbitListener(queues = "direct_queue") //指定要处理的队列名称 public void receive(String id){ System.out.println("已完成短信发送业务(rabbitmq direct),id: " + id); } }
欢迎大家一起来学习,有不足的地方还请指出。