RabbitMq使用
用于异步处理,日志处理,流量削峰,应用解耦
引用依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
参数配制
默认配制
spring:
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
发送消息
public class MqSend {
@Autowired
private AmqpTemplate amqpTemplate;
/**
* 发送Mq测试消息
*/
public void send(){
amqpTemplate.convertAndSend("myQueue","now "+new Date());
}
/**
* 发送数据供应商分组Mq测试消息
*/
public void sendOrder(){
amqpTemplate.convertAndSend("myQueue","computer","now "+new Date());
}
}
接收消息
@Slf4j
@Component
public class MqReceiver {
//1. 接收手动创建的消息,需先手动创建myQueue队列名
/*@RabbitListener(queues = "myQueue")
public void processtest(String message){
log.info("MQReceiver: {}",message);
}*/
//2. 自动创建队列
// @RabbitListener(queuesToDeclare = @Queue("myQueue"))
//3. 自动创建, Exchange和Queue绑定
@RabbitListener(bindings = @QueueBinding(
value = @Queue("myQueue"),
exchange = @Exchange("myExchange")
))
public void process(String message) {
log.info("MqReceiver: {}", message);
}
/**
* 数码供应商服务 接收分组消息
* @param message
*/
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange("myOrder"),
key = "computer",
value = @Queue("computerOrder")
))
public void processComputer(String message) {
log.info("computer MqReceiver: {}", message);
}
/**
* 水果供应商服务 接收分组消息
* @param message
*/
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange("myOrder"),
key = "fruit",
value = @Queue("fruitOrder")
))
public void processFruit(String message) {
log.info("fruit MqReceiver: {}", message);
}
}