之前介绍过关于消息发送和接收的可靠性:RabbitMQ学习之消息可靠性及特性 
下面主要介绍一下集群环境下,rabbitmq实例宕机的情况下,消息的可靠性。验证rabbitmq版本【3.4.1】。 
集群环境要求: 
1.集群中至少有一台硬盘节点 
2.加入集群中有一台内存节点,一台硬盘节点,需要先启动硬盘节点。单节点不能设置为内存节点 
集群环境:

节点名称 节点类型
vm-129 硬盘
vm-130 内存

 
验证结论: 
1.vm-129、vm-130节点都可以创建持久化队列及发送持久化消息 
2.当vm-130宕机 
1)vm-130的内存队列丢失,持久化队列不可读、不可写 
2)vm-129原有队列可读写,可以创建持久化队列及发送持久化消息,并能读写 
3)vm-130重启,持久化消息存在,并能正常读写 
3.当vm-129宕机 
1)vm-129的内存队列丢失,持久化队列不可读、不可写 
2)vm-130原有队列可读写,可以创建持久化队列及发送持久化消息,并能读写 
3)vm-129重启,持久化消息存在,并能正常读写 
3.当vm-130先宕机 
1)在vm-129内写持久化队列和消息Q1 
2)vm-130重启后,再把vm-129宕机,再将vm-129重启 
3)Q1消息仍然存在,并能正确消费 
4.当vm-130先宕机 
1)在A内写持久化队列和消息Q2 
2)再把vm-129宕机,再将vm-129、vm-130集群重启 
3)Q2消息丢失 
内存节点数据目录: 
 
硬盘节点数据目录: 

参考文档 
1.rabbitMQ源码分析 – 持久化机制 
2.RabbitMQ概念及环境搭建(四)RabbitMQ High Availability

RabbitMQ学习之集群消息可靠性测试的更多相关文章

  1. RabbitMQ学习之集群模式

    由于RabbitMQ是用erlang开发的,RabbitMQ完全依赖Erlang的Cluster,因为erlang天生就是一门分布式语言,集群非常方便,但其本身并不支持负载均衡.Erlang的集群中各 ...

  2. RabbitMQ学习之集群镜像模式配置

    1.增加负载均衡器 关于负载均衡器,商业的比如F5的BIG-IP,Radware的AppDirector,是硬件架构的产品,可以实现很高的处理能力.但这些产品昂贵的价格会让人止步,所以我们还有软件负载 ...

  3. RabbitMQ学习之集群部署

    我们先搭建一个普通集群模式,在这个模式基础上再配置镜像模式实现高可用,Rabbit集群前增加一个反向代理,生产者.消费者通过反向代理访问RabbitMQ集群. 架构图如下: 设计架构可以如下:在一个集 ...

  4. (转)RabbitMQ学习之集群部署

    http://blog.csdn.net/zhu_tianwei/article/details/40931971 我们先搭建一个普通集群模式,在这个模式基础上再配置镜像模式实现高可用,Rabbit集 ...

  5. RabbitMq学习2-php命令行模式测试rabbitmq

    一.RabbitMQ结构 1.几个概念说明:       Broker:简单来说就是消息队列服务器实体. Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列. Queue:消息队列载体 ...

  6. 官网英文版学习——RabbitMQ学习笔记(十)RabbitMQ集群

    在第二节我们进行了RabbitMQ的安装,现在我们就RabbitMQ进行集群的搭建进行学习,参考官网地址是:http://www.rabbitmq.com/clustering.html 首先我们来看 ...

  7. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  8. 部署rabbitMQ镜像集群实战测试

    部署rabbitMQ镜像集群 版本信息 rabbit MQ: 3.8.5 Erlang: 官方建议最低21.3 推荐22.x 这里用的是23 环境准备 主机规划 主机 节点 172.16.14.3 磁 ...

  9. RabbitMQ学习(一):RabbitMQ要点简介

    转载:http://blog.csdn.net/leixiaotao_java/article/details/78909760#t0 1.什么是RabbitMQ? RabbitMQ是由Erlang语 ...

随机推荐

  1. vue 封装axios以及使用中间代理 proxy

    为什么需要封装呢?主要是为了更好管理项目以及增加复用性 1.首先在src文件夹下创建api文件夹 . utils文件夹 . server文件夹 api:创建一个index.js文件   用来存放接口地 ...

  2. 【codeforces 798C】Mike and gcd problem

    [题目链接]:http://codeforces.com/contest/798/problem/C [题意] 给你n个数字; 要求你进行若干次操作; 每次操作对第i和第i+1个位置的数字进行; 将 ...

  3. python进行excel操作

    使用模块 xlsxwriter : http://xlsxwriter.readthedocs.io/ 可以自定义表格合并.样式 加各种2D图表 写入格式化表格数据时,与pandas结合速度更快!

  4. 《Android源代码设计模式解析与实战》读书笔记(八)

    第八章.状态模式 1.定义 状态模式中的行为是由状态来决定,不同的状态下有不同的行为.当一个对象的内在状态改变时同意改变其行为,这个对象看起来像是改变了其类. 2.使用场景 1.一个对象的行为取决于它 ...

  5. MVC地区多级联动扩展实现(非递归形式)

    MVC前台界面调用方式如下: @Html.AreaDropDownList(, string.Empty) 参数说明: 第一个参数控件的名称: 第二个参数选中的地区编码: 第三个参数地区层级: 第四个 ...

  6. [2-SAT] poj 3207 Ikki's Story IV - Panda's Trick

    题目链接: id=3207">http://poj.org/problem? id=3207 Ikki's Story IV - Panda's Trick Time Limit: 1 ...

  7. runtime objc_msgSend

    runtime objc_msgSend 字数1781 阅读245 评论2 喜欢7  前言 想要通过runtime发送消息,就必须要掌握runtime如何发送消息,是调用哪个函数?又是如何调用的?本篇 ...

  8. Storm集群组件和编程模型

     Storm工作原理: Storm是一个开源的分布式实时计算系统,常被称为流式计算框架.什么是流式计算呢?通俗来讲,流式计算顾名思义:数据流源源不断的来,一边来,一边计算结果,再进入下一个流. 比 ...

  9. Linux实时查看日志,访问前10IP 和相关命令

    Nginx日志分析可以获得很多有用的信息,现在来试试最基本的,获取最多访问的前10个IP地址及访问次数. 既然是统计,那么awk是必不可少的,好用而高效. 命令如下: awk '{a[$1] += 1 ...

  10. Linux系统的命令源码的获取方法

    我们知道,Linux是开源的,它自带的功能强大的命令也是开源的,也就是说.我们能够获得这些命令的源码并研究它.那到底怎样获得系统的命令的源码呢? 命令的源码是一个软件包为单元的,放在一个软件包的源码中 ...