我是靠谱客的博主 认真枕头,这篇文章主要介绍RabbitMQ 基本使用(注解的方式),现在分享给大家,希望可以做个参考。

RabbitMQ 可以采用基于注解的方式来创建队列,如下:

1. 手动在 RabbitMQ 管理界面创建 myQueue队列

复制代码
1
2
3
1. 发送者代码:
复制代码
1
2
3
4
5
6
7
@Autowired private AmqpTemplate amqpTemplate; public void send(){ String msg = "mqsender send ..." + new Date(); amqpTemplate.convertAndSend("myQueue", msg); }
复制代码
1
2
3
2. 接收者代码
复制代码
1
2
3
4
5
6
7
8
9
/** * 需要手动在39...50:15672/ 下的RabbitMQ management 界面下创建一个队列 myQueue * @param msg */ @RabbitListener(queues = "myQueue") public void receive(String msg){ log.info("mqReceive = {}" , msg ); }

2. 通过注解自动创建 myQueue 队列

复制代码
1
2
3
4
1. 发送方程序和上面一样 2. 接收方程序如下:
复制代码
1
2
3
4
5
6
7
8
9
/** * * @param msg */ @RabbitListener(queuesToDeclare = @Queue("myQueue")) public void receive(String msg){ log.info("mqReceive = {}" , msg ); }

3. 自动创建,queue 和 exchange 绑定

复制代码
1
2
3
4
1. 发送方程序不变 2. 接收方程序如下:
复制代码
1
2
3
4
5
6
7
8
9
// 3. 自动创建,queue 和 exchange 绑定 @RabbitListener(bindings = @QueueBinding( value = @Queue("myQueue"), exchange = @Exchange("myExchange") )) public void receive(String msg){ log.info("mqReceive = {}" , msg ); }

4. 实战模拟消息分组

复制代码
1
2
3
1. 发送方:
复制代码
1
2
3
4
5
6
7
8
9
10
/** * 模拟消息分组 发送方 */ public void sendOrder(){ String msg = "mqsender send ..." + new Date(); // 参数:交换机,路由key, 消息 amqpTemplate.convertAndSend("myOrder","computer", msg); }
复制代码
1
2
3
2. 接收方:
复制代码
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
/**----------- 模拟消息分组 --------------------*/ /** * 数码供应商服务 接收消息 * 消息发到交换机,交换机根据不同的key 发送到不同的队列 */ @RabbitListener(bindings = @QueueBinding( exchange = @Exchange("myOrder"), key = "computer", value = @Queue("computerOrder") )) public void receiveComputer(String msg){ log.info(" receiveComputer service = {}" , msg ); } /** * 水果供应商服务 接收消息 */ @RabbitListener(bindings = @QueueBinding( value = @Queue("fruitOrder"), key = "fruit", exchange = @Exchange("myOrder") )) public void receiveFruit(String msg){ log.info(" receiveFruit service = {}" , msg ); }
复制代码
1
2
3
3. 测试用例
复制代码
1
2
3
4
5
6
7
@Autowired private MQSender sender; @Test public void sendOrderTest() { sender.sendOrder(); }
复制代码
1
2
3
4
5
4. 结果: 消息发送到交换机,交换机通过路由key 发送到对应的队列。 因此computerOrder队列得到了消息,进而receiveComputer()接收到了消息。

最后

以上就是认真枕头最近收集整理的关于RabbitMQ 基本使用(注解的方式)的全部内容,更多相关RabbitMQ内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部