1. 交换机
2. Fanout交换机
广播。生产者向exchange发消息- @SpringBootTest
- public class SpringAmqpTest {
- @Autowired
- public RabbitTemplate rabbitTemplate;
- @Test
- void testSimple() {
- String exchangName = "hmall.fabout";
- rabbitTemplate.convertAndSend(exchangName, null,"hello, w");
- }
- }
复制代码 斲丧者监听exchange绑定的队列即可。- @Component
- @Slf4j
- public class SpringAmqbListener {
- @Autowired
- RabbitTemplate rabbitTemplate;
- @RabbitListener(queues = "simple.queue")
- public void Lister(String msg) {
- log.info(msg);
- }
- @RabbitListener(queues = "fanout.q1")
- public void Lister1(String msg) {
- System.out.println("q1:" + msg);
- }
- @RabbitListener(queues = "fanout.q2")
- public void Lister2(String msg) {
- System.out.println("q2:" + msg);
- }
- }
复制代码 3. Direct 直连交换机
生产者,须要指定exchange和key- @SpringBootTest
- public class SpringAmqpTest {
- @Autowired
- public RabbitTemplate rabbitTemplate;
- @Test
- void testSimple() {
- String exchangName = "hmall.direct";
- rabbitTemplate.convertAndSend(exchangName, "yellow", "hello, w");
- }
- }
复制代码 斲丧者指定对列- @Component
- @Slf4j
- public class SpringAmqbListener {
- @Autowired
- RabbitTemplate rabbitTemplate;
- @RabbitListener(queues = "simple.queue")
- public void Lister(String msg) {
- log.info(msg);
- }
- @RabbitListener(queues = "direct.q1")
- public void Lister1(String msg) {
- System.out.println("q1:" + msg);
- }
- @RabbitListener(queues = "direct.q2")
- public void Lister2(String msg) {
- System.out.println("q2:" + msg);
- }
- @RabbitListener(queues = "direct.q3")
- public void Lister3(String msg) {
- System.out.println("q3" + msg);
- }
- }
复制代码 4. Topic交换机
生产者- @SpringBootTest
- public class SpringAmqpTest {
- @Autowired
- public RabbitTemplate rabbitTemplate;
- @Test
- void testSimple() {
- String exchangName = "hmall.topic";
- rabbitTemplate.convertAndSend(exchangName, "china.news", "hello, w");
- }
- }
复制代码 斲丧者- @RabbitListener(queues = "topic.q1")
- public void topicLister1(String msg) {
- System.out.println("q1:" + msg);
- }
- @RabbitListener(queues = "topic.q2")
- public void topicLister2(String msg) {
- System.out.println("q2:" + msg);
- }
复制代码 5. 代码天生交换机
基于注解绑定,在斲丧者的@Component中写。- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = "direct.queue1"),
- exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),
- key = {"red", "yellow"}
- ))
- public void topicLister1(String msg) {
- System.out.println("q1:" + msg);
- }
- @RabbitListener(bindings = @QueueBinding(
- value = @Queue(name = "direct.queue2"),
- exchange = @Exchange(name = "hmall.direct", type = ExchangeTypes.DIRECT),
- key = {"red", "yellow"}
- ))
- public void topicLister2(String msg) {
- System.out.println("q2:" + msg);
- }
复制代码 6. 修改默认序列化器
- <!--jackson-->
- <dependency>
- <groupId>com.fasterxml.jackson.core</groupId>
- <artifactId>jackson-databind</artifactId>
- </dependency>
复制代码- @Bean
- public MessageConverter messageConverter() {
- return new Jackson2JsonMessageConverter();
- }
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |