rabbitmq3.8.2安装步骤及集群配置

rabbitmq3.8.2安装步骤及集群配置,第1张

发现以下这种情况出现时,无法避免消息丢失。

由于希望高可用,集群队列一般都设置为持久化、lazy、镜像队列

假设RMQ集群有5个节点:node[1:5]

假设队列  q  为一主一从,队列进程分别在 node1、node3节点。

分区前:
假设队列  q 的master、slave进程所在节点: node1和 node3  与  node2, node4, node5  之间的网络中断了,此时
此刻两者之间的网络通信并未恢复。这种中间状态很有可能导致数据丢失,分析如下:
之前打到 node1, node3 上的生产者连接 producer client #1,可以正常继续向队列 q 上发消息。

而打到 node2, node4, node5 上的生产者连接 producer client #2,无法感知到队列q不处在当前小块集团节点中( 集团中没有队列q进程 )。Queue不同于Exchange、Bindings,队列进程只存在于其master和slaves节点中。而此时生产者即使使用了confirm、returnListener等机制,消息还是到达不了目标队列q(尤其是上游通过exchange发送,下面挂了多个队列), 但发送方依然可以收到服务器返回的Ack,认为消息已经通过exchange路由到目标队列中去了 。造成了消息的丢失。

RabbitMQ是2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,简称MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法,由Erlang(专门针对于大数据高并发的语言)语言开发,可复用的企业消息系统,是当前最主流的消息中间件之一,具有可靠性、灵活的路由、消息集群简单、队列高可用、多种协议的支持、管理界面、跟踪机制以及插件机制。



1消息 就是数据,增删改查的数据。例如在员工管理系统中增删改查的数据

2队列 指的是一端进数据一端出数据,例如C#中(Queue数据结构)



1消息队列指:一端进消息,一端出消息

2RabbitMQ就是实现了消息队列概念的一个组件,以面向对象的思想去理解,消息队列就是类,而RabbitMQ就是实例,当然不仅仅只有RabbitMQ,例如ActiveMQ,RocketMQ,Kafka,包括Redis也可以实现消息队列。



1在常见的单体架构中,主要流程是用户UI *** 作发起>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10657262.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存