用 原始AmqpTemplate 模拟多个不同的消费者
比如,一个订单服务,如下单,就可能是下的数码,有的可能下的是水果,数码供应商就只关心数码的消息,水果的只关心水果的。同时这样也可以分压系统,就可以对消息进行分组
消息接收
package com.lm.test.message; import lombok.extern.slf4j.Slf4j; import org.springframework.amqp.rabbit.annotation.Exchange; import org.springframework.amqp.rabbit.annotation.Queue; import org.springframework.amqp.rabbit.annotation.QueueBinding; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.stereotype.Component; /** * 接收方 */ @Slf4j @Component public class MqReceiver2 { //数码供应商服务 @RabbitListener(bindings = @QueueBinding( exchange = @Exchange("myOrder"), key = "computer", value = @Queue("order-computer") )) public void processComputer(String message){ log.info("数码供应商服务 消息接受:{}",message); } //水果供应商服务 @RabbitListener(bindings = @QueueBinding( exchange = @Exchange("myOrder"), key = "fruit", value = @Queue("order-fruit") )) public void processFruit(String message){ log.info("水果供应商服务 消息接受:{}",message); } }
消息发送
package com.lm.test.controller; import org.springframework.amqp.core.AmqpTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.Date; //发送MQ测试 @RestController public class SendMessage2Controller { @Autowired private AmqpTemplate amqpTemplate; @GetMapping("/sendMessage2") public void process(){ String message = "发送的消息:"+new Date(); // amqpTemplate.convertAndSend("myOrder","computer",message); amqpTemplate.convertAndSend("myOrder","fruit",message); } }