1414- [ 消息丢失] ( #%E6%B6%88%E6%81%AF%E4%B8%A2%E5%A4%B1 )
1515 - [ 生产者确认机制] ( #%E7%94%9F%E4%BA%A7%E8%80%85%E7%A1%AE%E8%AE%A4%E6%9C%BA%E5%88%B6 )
1616 - [ 路由不可达消息] ( #%E8%B7%AF%E7%94%B1%E4%B8%8D%E5%8F%AF%E8%BE%BE%E6%B6%88%E6%81%AF )
17- - [ Return消息机制] ( #return%E6%B6%88%E6%81%AF%E6%9C%BA%E5%88%B6 )
18- - [ 备份交换机] ( #%E5%A4%87%E4%BB%BD%E4%BA%A4%E6%8D%A2%E6%9C%BA )
17+ - [ Return消息机制] ( #return%E6%B6%88%E6%81%AF%E6%9C%BA%E5%88%B6 )
18+ - [ 备份交换机] ( #%E5%A4%87%E4%BB%BD%E4%BA%A4%E6%8D%A2%E6%9C%BA )
1919 - [ 消费者手动消息确认] ( #%E6%B6%88%E8%B4%B9%E8%80%85%E6%89%8B%E5%8A%A8%E6%B6%88%E6%81%AF%E7%A1%AE%E8%AE%A4 )
2020 - [ 持久化] ( #%E6%8C%81%E4%B9%85%E5%8C%96 )
2121 - [ 镜像队列] ( #%E9%95%9C%E5%83%8F%E9%98%9F%E5%88%97 )
2929
3030<!-- END doctoc generated TOC please keep comment here to allow auto update -->
3131
32+ > 本文已经收录到github仓库,此仓库用于分享Java相关知识总结,包括Java基础、MySQL、Spring Boot、MyBatis、Redis、RabbitMQ、计算机网络、数据结构与算法等等,欢迎大家提pr和star!
33+ >
34+ > github地址:https://github.com/Tyson0314/Java-learning
35+ >
36+ > 如果github访问不了,可以访问gitee仓库。
37+ >
38+ > gitee地址:https://gitee.com/tysondai/Java-learning
39+
40+ 文章目录:
41+
42+ ![ ] ( https://gitee.com/tysondai/img/raw/master/image-20210914234334988.png )
43+
3244# 简介
3345
3446RabbitMQ是一个由erlang开发的消息队列。消息队列用于应用间的异步协作。
3547
36- ![ image-20200718104019614 ] ( ../ img/rabbitmq.png)
48+ ![ ] ( https://gitee.com/tysondai/ img/raw/master /rabbitmq.png)
3749
3850## 基本概念
3951
@@ -82,19 +94,19 @@ Exchange规则。
8294
8395direct交换机会将消息路由到binding key 和 routing key完全匹配的队列中。它是完全匹配、单播的模式。
8496
85- ![ ] ( ../ img/rabbitmq-direct.png)
97+ ![ ] ( https://gitee.com/tysondai/ img/raw/master /rabbitmq-direct.png)
8698
8799## fanout
88100
89101所有发到 fanout 类型交换机的消息都会路由到所有与该交换机绑定的队列上去。fanout 类型转发消息是最快的。
90102
91- ![ ] ( ../ img/rabbitmq-fanout.png)
103+ ![ ] ( https://gitee.com/tysondai/ img/raw/master /rabbitmq-fanout.png)
92104
93105## topic
94106
95107topic交换机使用routing key和binding key进行模糊匹配,匹配成功则将消息发送到相应的队列。routing key和binding key都是句点号“. ”分隔的字符串,binding key中可以存在两种特殊字符“* ”与“#”,用于做模糊匹配,其中“\* ”用于匹配一个单词,“#”用于匹配多个单词。
96108
97- ![ ] ( ../ img/rabbitmq-topic.png)
109+ ![ ] ( https://gitee.com/tysondai/ img/raw/master /rabbitmq-topic.png)
98110
99111## headers
100112
@@ -147,7 +159,7 @@ rabbitTemplate.setConfirmCallback(confirmCallback);
147159
148160对于不可路由的消息,有两种处理方式:Return消息机制和备份交换机。
149161
150- ## Return消息机制
162+ ### Return消息机制
151163
152164Return消息机制提供了回调函数 ReturnCallback,当消息从交换机路由到Queue失败才会回调这个方法。需要将` mandatory ` 设置为 ` true ` ,才能监听到路由不可达的消息。
153165
@@ -169,7 +181,7 @@ rabbitTemplate.setReturnCallback(returnCallback);
169181
170182当消息从交换机路由到Queue失败时,会返回 ` return exchange: , routingKey: MAIL, replyCode: 312, replyText: NO_ROUTE ` 。
171183
172- ## 备份交换机
184+ ### 备份交换机
173185
174186备份交换机alternate-exchange 是一个普通的exchange,当你发送消息到对应的exchange时,没有匹配到queue,就会自动转移到备份交换机对应的queue,这样消息就不会丢失。
175187
@@ -399,7 +411,7 @@ channel.basicAck(response.getEnvelope().getDeliveryTag(),false);
399411
400412## 消息过期时间
401413
402- 在生产端发送消息的时候可以给消息设置过期时间,单位为毫秒(ms)。
414+ 在生产端发送消息的时候可以给消息设置过期时间,单位为毫秒(ms)
403415
404416``` java
405417Message msg = new Message (" tyson" . getBytes(), mp);
@@ -418,4 +430,14 @@ msg.getMessageProperties().setExpiration("3000");
418430
419431[ RabbitMQ发送邮件代码] ( https://zhuanlan.zhihu.com/p/145908317 )
420432
421- [ 线上rabbitmq问题] ( https://juejin.im/post/6844904088212094983#heading-0 )
433+ [ 线上rabbitmq问题] ( https://juejin.im/post/6844904088212094983#heading-0 )
434+
435+
436+
437+ > 最后给大家分享一个github仓库,上面放了** 200多本经典的计算机书籍** ,包括C语言、C++、Java、Python、前端、数据库、操作系统、计算机网络、数据结构和算法、机器学习、编程人生等,可以star一下,下次找书直接在上面搜索,仓库持续更新中~
438+ >
439+ > github地址:https://github.com/Tyson0314/java-books
440+ >
441+ > 如果github访问不了,可以访问gitee仓库。
442+ >
443+ > gitee地址:https://gitee.com/tysondai/java-books
0 commit comments