最好阅读一下上篇文章《
RabbitMQ 在 Spring Boot 进阶之交换器 Direct Exchange》
还是这个业务,它负责资料的上传。
它之前的需求是,不同的用户上传后,后续的处理不同。
- 普通用户上传资料后,可以获得一定的积分。
- 内部人员上传资料后,不需要积分,但它会增加一定的业绩。
现在又来了一个需求
我们不需要积分和业绩了,要给所有用户一点奖励,还要记录一条日志,甚至还要通知某某人去对上传的资料进行审核。
- 如果按照之前的做法,那么我们的思路是将生产者代码改成这样
@Component
public class Runner implements CommandLineRunner {
@Autowired
private RabbitTemplate rabbitTemplate;
@Override
public void run(String... args) throws Exception {
System.out.println("Sending message>>>");
rabbitTemplate.convertAndSend(ExchangeName, rewardQueueName, "一点奖励~");
rabbitTemplate.convertAndSend(ExchangeName, logQueueName, "一个日志~");
rabbitTemplate.convertAndSend(ExchangeName, verifyQueueName, "审批~");
...
...
...
}
}
实际上像这种业务,rabbitMQ为我们提供了一种船新的交换器:Fanout Exchange,它不需要匹配路由键。
- 我们先声明一个fanout exchange
- 然后声明三个队列
- 将队列与exchange进行绑定
package com.example.rabbit_test;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.sprin