一、RabbitMQ基本使用
1、在order中server模块的pom.xml增加
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>

2、增加接收Mq消息
package com.example.message;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
* 接收Mq消息
* Created by Think on 2019/2/14.
*/
@Slf4j
@Component
public class MqReceiver {
@RabbitListener(queues = "myQueue")
public void process(String message){
log.info("MqReceiver:{}",message);
}
}
3、增加发送Mq消息
/**
* Mq消息发送方
* Created by Think on 2019/2/14.
*/
@Component
public class MqSenderTest extends OrderApplicationTests {
@Autowired
private AmqpTemplate amqpTemplate;
@Test
public void send(){
//myQueue 队列的名称
amqpTemplate.convertAndSend("myQueue", "Hello,now " + new Date());
}
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class OrderApplicationTests {
@Test
public void contextLoads() {
}
}
4、在MQ管理页面增加myQueue的消息队列

5、测试结果

可以看到消息接收到的图

二、自动创建队列名称
@Slf4j
@Component
public class MqReceiver {
//1. @RabbitListener(queues = "myQueue")
//2. 自动创建队列
@RabbitListener(queuesToDeclare = @Queue("myQueue"))
public void process(String message){
log.info("MqReceiver:{}",message);
}
}
三、Exchange和Queue绑定
public class MqReceiver {
//1. @RabbitListener(queues = "myQueue")
//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);
}
}
如下图

四、消息分组发送
public class MqReceiver {
/**
* 模拟服务1, 接收消息
* @param message
*/
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange("myOrder"),
key = "computer",
value = @Queue("computerOrder")
))
public void processComputer(String message){
log.info("computer MqReceiver:{}",message);
}
/**
* 模拟服务2, 接收消息
* @param message
*/
@RabbitListener(bindings = @QueueBinding(
exchange = @Exchange("myOrder"),
key = "fruit",
value = @Queue("fruitOrder")
))
public void processFruit(String message){
log.info("Fruit MqReceiver:{}",message);
}
}
定义两个消息接收,一个key为computer,一个为fruit
消息发送方
@Test
public void sendOrder(){
//myQueue 队列的名称
amqpTemplate.convertAndSend("myOrder","computer", "Hello Computer,now " + new Date());
}
@Test
public void sendOrder2(){
//myQueue 队列的名称
amqpTemplate.convertAndSend("myOrder","fruit", "Hello Fruit,now " + new Date());
}