#### RabbitMQ如何保证数据的不丢失
RabbitMQ一般情况很少丢失,但是不能排除意外,为了保证我们自己系统高可用,我们必须作出更好完善措施,保证系统的稳定性。
下面来介绍下,如何保证消息的绝对不丢失的问题,下面分享的绝对干货,都是在知名互联网产品的产线中使用。
1. 消息持久化
RabbitMQ 的消息默认存放在内存上面,如果不特别声明设置,消息不会持久化保存到硬盘上面的,如果节点重启或者意外crash掉,消息就会丢失。
所以就要对消息进行持久化处理。如何持久化,下面具体说明下:
要想做到消息持久化,必须满足以下三个条件,缺一不可。
1) Exchange 设置持久化
2)Queue 设置持久化
3)Message持久化发送:发送消息设置发送模式deliveryMode=2,代表持久化消息
2. ACK确认机制
使用Message acknowledgment 机制,就是消费端消费完成要通知服务端,服务端才把消息从内存删除。
这样就解决了,及时一个消费者出了问题,没有同步消息给服务端,还有其他的消费端去消费,保证了消息不丢的case
3. 设置集群镜像模式
1)单节点模式:最简单的情况,非集群模式,节点挂了,消息就不能用了。业务可能瘫痪,只能等待。
2)普通模式:默认的集群模式,某个节点挂了,该节点上的消息不能用,有影响的业务瘫痪,只能等待节点恢复重启可用(必须持久化消息情况下)。
3)镜像模式:把需要的队列做成镜像队列,存在于多个节点,属于RabbitMQ的HA方案
三种HA策略模式:
1)同步至所有的
2)同步最多N个机器
3)只同步至符合指定名称的nodes
##### HA 镜像队列有一个很大的缺点就是: 系统的吞吐量会有所下降
4. 消息补偿机制
消息补偿机制需要建立在消息要写入DB日志,发送日志,接受日志,两者的状态必须记录。
然后根据DB日志记录check 消息发送消费是否成功,不成功,进行消息补偿措施,重新发送消息处理。
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
算法与数据结构涵盖了以下主要内容: 数据结构(Data Structures): 逻辑结构:描述数据元素之间的逻辑关系,如线性结构(如数组、链表)、树形结构(如二叉树、堆、B树)、图结构(有向图、无向图等)以及集合和队列等抽象数据类型。 存储结构(物理结构):描述数据在计算机中如何具体存储。例如,数组的连续存储,链表的动态分配节点,树和图的邻接矩阵或邻接表表示等。 基本操作:针对每种数据结构,定义了一系列基本的操作,包括但不限于插入、删除、查找、更新、遍历等,并分析这些操作的时间复杂度和空间复杂度。 算法: 算法设计:研究如何将解决问题的步骤形式化为一系列指令,使得计算机可以执行以求解问题。 算法特性:包括输入、输出、有穷性、确定性和可行性。即一个有效的算法必须能在有限步骤内结束,并且对于给定的输入产生唯一的确定输出。 算法分类:排序算法(如冒泡排序、快速排序、归并排序),查找算法(如顺序查找、二分查找、哈希查找),图论算法(如Dijkstra最短路径算法、Floyd-Warshall算法、Prim最小生成树算法),动态规划,贪心算法,回溯法,分支限界法等。 算法分析:通过数学方法分析算法的时间复杂度(运行时间随数据规模增长的速度)和空间复杂度(所需内存大小)来评估其效率。 学习算法与数据结构不仅有助于理解程序的内部工作原理,更能帮助开发人员编写出高效、稳定和易于维护的软件系统。
资源推荐
资源详情
资源评论
收起资源包目录
Java 学习笔记,包括多线程,数据结构,算法,设计模式,Spring boot,RocketMQ.zip (437个子文件)
gradlew.bat 3KB
gradlew.bat 3KB
jieba.dict 150B
.gitignore 298B
build.gradle 3KB
build.gradle 1KB
settings.gradle 582B
gradlew 8KB
gradlew 8KB
webchat.html 2KB
Contour.java 233KB
IDW.java 26KB
Cressman.java 24KB
Kriging.java 21KB
InterpolationUtils.java 19KB
RegressionController.java 19KB
KDTree.java 18KB
ReadExcelData.java 18KB
GeoJSONUtil.java 13KB
MathsUtil.java 12KB
SynchronizationLocks.java 11KB
AbstractImage.java 11KB
Test.java 10KB
EllipseDiff.java 9KB
SortPractice.java 9KB
JsonDemo.java 8KB
FeaureUtil.java 8KB
KrigingTest.java 8KB
MeteoSample.java 7KB
SnowflakeIdWorker.java 7KB
RedisLock.java 7KB
LRUCache.java 7KB
ThreadExecutorTest.java 7KB
PascalTriangle.java 7KB
RocketmqConfig.java 6KB
ConcurrentMapTest.java 6KB
HistoryFun.java 6KB
Lambda.java 6KB
ArraySolution.java 6KB
YamlUtils.java 6KB
EllipseTest.java 6KB
RedisUtils.java 5KB
EncodeUtils.java 5KB
KrigingMatrixSolverTask.java 5KB
XuzsMath.java 5KB
Producer.java 5KB
PrintMinNumber.java 5KB
BasicEx.java 4KB
ShortestPath.java 4KB
WordUtils.java 4KB
LogisticRegression.java 4KB
ParallelTaskDemo.java 4KB
DataTypeTest.java 4KB
Base64Test.java 4KB
TextWebSocketFrameHandler.java 4KB
KrigingImage.java 4KB
SingleLinkedList.java 4KB
HttpRequestHandler.java 4KB
AuthUserService.java 4KB
PicTest.java 4KB
WebSecurityConfig.java 4KB
GeoJsonController.java 3KB
TwoWayLinkedList.java 3KB
AbstractFactory.java 3KB
JwtTokenUtil.java 3KB
OptionalFuture.java 3KB
MyClassLoader.java 3KB
ParameterRequestWrapper.java 3KB
Consumer.java 3KB
Article.java 3KB
AuthGlobalFilter.java 3KB
JwtAuthenticationFilter.java 3KB
CloneUtil.java 3KB
TransactionListenerImpl.java 3KB
QueueTest.java 3KB
Queue.java 3KB
ConsumerProperties.java 3KB
User.java 3KB
JvmDemo0.java 3KB
DoublePointLinkedList.java 3KB
SimpleChatServerHandler.java 3KB
XuzsMatrix.java 3KB
OnewayProducer.java 3KB
OrderTask.java 3KB
ColorUtils.java 3KB
UseHutool.java 3KB
DecimalUtils.java 3KB
HttpServerHandler.java 3KB
Polygon.java 3KB
UserAuthenticationProvider.java 3KB
MyBatisConfig.java 3KB
Stack.java 3KB
Generic.java 3KB
Tut3Config.java 3KB
TokenServiceImpl.java 2KB
LinearRegression.java 2KB
StringCode.java 2KB
CountDownTask.java 2KB
ReverseBinaryTree.java 2KB
RandomNumberTest.java 2KB
共 437 条
- 1
- 2
- 3
- 4
- 5
资源评论
极致人生-010
- 粉丝: 4379
- 资源: 3087
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功