RabbitMQ 4.9 SpringBoot与RabbitMQ

SpringBoot整合RabbitMQ
依赖
1 | <dependency> |
Fanout生产者示例
使用RabbitMQConfiguration初始化Exchange、Queue以及进行队列交换机绑定;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class RabbitMQConfiguration {
//声明注册fanout模式的交换机
public FanoutExchange fanoutExchange(){
return new FanoutExchange("fanoutExchange",true,false);
}
//声明队列:save, sms, email, notice
public Queue saveQueue(){
return new Queue("save.fanout.queue",true);
}
public Queue smsQueue(){
return new Queue("sms.fanout.queue",true);
}
public Queue emailQueue(){
return new Queue("email.fanout.queue",true);
}
public Queue noticeQueue(){
return new Queue("notice.fanout.queue",true);
}
//完成绑定关系(队列和交换机完成绑定关系)
public Binding saveBinding(){return BindingBuilder.bind(saveQueue()).to(fanoutExchange());}
public Binding smsBinding(){return BindingBuilder.bind(smsQueue()).to(fanoutExchange());}
public Binding emailBinding(){return BindingBuilder.bind(emailQueue()).to(fanoutExchange());}
public Binding noticeBinding(){return BindingBuilder.bind(noticeQueue()).to(fanoutExchange());}
}使用rabbitTemplate进行消息发送
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class OrderService {
private RabbitTemplate rabbitTemplate;
/**
* 模拟用户下单
* @param uid x
* @param pid x
* @param num x
*/
public void makeOrder(String uid,String pid,int num){
//生成订单
String orderId = UUID.randomUUID().toString();
System.out.println("生成订单:"+orderId);
//通过MQ发送消息
String exchangeName = "fanoutExchange";
String routingKey = "";
// 交换机 , 路由Key或队列名称, 消息内容
rabbitTemplate.convertAndSend(exchangeName,routingKey,orderId);
}
}1
2
3
4
5
6
7
OrderService orderService;
void contextLoads() {
orderService.makeOrder("1","1",123);
}
消费者示例
创建一个Consumer类,使用@Service注解和@RabbitListener注解
其中:@RabbitListener(queues = {"email.fanout.queue","队列名"})
,表示要监听指定队列的消息信息
然后在类的方法中加注解@RabbitHandler
表示该方法负责处理收到的消息。
1 |
|
DirectExchange生产者示例
与Fanout不同的是,直接将Bean Exchange的类型改为DirectExchange,然后键Binding Bean的添加方法with绑定RoutingKey即可。
1 |
|
TopicExchange注解方式消费者示例
这个没有可以学到的内容,建议先学@QueueBinding注解
1 |
|
一些SpringBoot的配置
配置连接名,集群,地址连接方式
1 | /* 配置连接名 */ |
评论