Código de proyecto completo https://gitee.com/glrno1/springboot_rabbitmq
Ejemplos de modelos de producción
/**
*生产者模型
*/
@RestController
public class RabbitMqSendControler {
@Autowired
RabbitTemplate rabbitTemplate;
/**
* 直连消息模型
* @param message
*/
@PostMapping("/sentTest")
public void sentTest(String message){
System.out.println("发送消息:"+message);
rabbitTemplate.convertAndSend("hello",message);
}
/**
* 工作队列消息模型
* @param message
*/
@PostMapping("/sentTest1")
public void sentTest1(String message){
for(int i=0;i<=20;i++){
System.out.println("发送消息:"+message+i);
rabbitTemplate.convertAndSend("work_quene",message+i);
}
}
/**
* 订阅模式-广播(fanout)
* @param message
*/
@PostMapping("sentTest2")
public void sentTest2(String message){
System.out.println("发送消息:"+message);
//第一个参数交换机名称,第二个参数,路由keyroutingkey,第三个参数,传递的消息
rabbitTemplate.convertAndSend("exchange_fanout","",message);
}
/**
* 订阅模式-路由(route)
* @param message
*/
@PostMapping("sentTest3")
public void sentTest3(String message){
System.out.println("发送消息:"+message);
//第一个参数交换机名称,第二个参数,路由keyroutingkey,第三个参数,传递的消息
rabbitTemplate.convertAndSend("exchange_route","warning",message);
}
/**
* 订阅模式-动态路由(topic)
* @param message
*/
@PostMapping("sentTest4")
public void sentTest4(String message){
System.out.println("发送消息:"+message);
//第一个参数交换机名称,第二个参数,路由keyroutingkey,第三个参数,传递的消息
rabbitTemplate.convertAndSend("exchange_topic","user.name.firstname",message);
}
}
Ejemplos de modelos de consumo
/**
消费者模型
*/
@Component
public class RabbitMqReceiveControler {
@Autowired
RabbitTemplate rabbitTemplate;
// ================================消息直连=================================
/**
*直连消息模型
* @param message
*/
@RabbitListener(queuesToDeclare = @Queue("hello"))
@RabbitHandler
public void receiveTest(String message){
System.out.println("消费者消费:"+message);
}
// ================================Work_quene=================================
/**
*工作队列消息模型
* 消费者1
* @param message
*/
@RabbitListener(queuesToDeclare = @Queue("work_quene"))
public void receiveTest1(String message){
System.out.println("消费者1消费:"+message);
}
/**
*工作队列消息模型
* 消费者2
* @param message
*/
@RabbitListener(queuesToDeclare = @Queue("work_quene"))
public void receiveTest2(String message){
System.out.println("消费者2消费:"+message);
}
// ================================fanout=================================
/**
* 订阅模型-广播(fanout)
* 消费者1
*/
@RabbitListener(bindings = @QueueBinding(
value = @Queue,
exchange = @Exchange(name="exchange_fanout",type = "fanout")
))
public void receiveTest3(String message){
System.out.println("消费者1消费:"+message);
}
/**
* 订阅模型-广播(fanout)
* 消费者2
*/
@RabbitListener(bindings = @QueueBinding(
value = @Queue,//创建临时队列
exchange = @Exchange(name="exchange_fanout",type = "fanout")//绑定交换机类型
))
public void receiveTest4(String message){
System.out.println("消费者2消费:"+message);
}
// ================================route=================================
/**
* 订阅模型-路由(route)
* 消费者1
*/
@RabbitListener(bindings = @QueueBinding(
value = @Queue,
key = {
"warning","info"},
exchange = @Exchange(name = "exchange_route",type = "direct")
))
public void receiveTest5(String message){
System.out.println("消费者1消费:"+message);
}
/**
* 订阅模型-路由(route)
* 消费者2
*/
@RabbitListener(bindings = @QueueBinding(
value = @Queue,//创建临时队列
key = {
"info"},//匹配路由key
exchange = @Exchange(name = "exchange_route",type = "direct")//绑定交换机
))
public void receiveTest6(String message){
System.out.println("消费者2消费:"+message);
}
// ================================topic=================================
/**
* 订阅模型-动态路由(topic)
* 消费者1
*/
@RabbitListener(bindings = @QueueBinding(
value = @Queue,
key = {
"user.*"},
exchange = @Exchange(name = "exchange_topic",type = "topic")
))
public void receiveTest7(String message){
System.out.println("消费者1消费:"+message);
}
/**
* 订阅模型-动态路由(topic)
* 消费者2
*/
@RabbitListener(bindings = @QueueBinding(
value = @Queue,//创建临时队列
key = {
"user.#"},//匹配路由key
exchange = @Exchange(name = "exchange_topic",type = "topic")//绑定交换机
))
public void receiveTest8(String message){
System.out.println("消费者2消费:"+message);
}
}