【深入理解RabbitMQ原理】RabbitMQ 相关问题总结--RabbitMQ 如何确保消息发送和消费?

本文总结了RabbitMQ的高可用部署方式,包括cluster、federation和shelve,以及节点类型和ErLang Cookie的作用。重点讨论了RabbitMQ确保消息发送和消费的机制,包括事务模式、confirm模式、消息路由、队列持久化和消费者确认。通过这些机制,RabbitMQ实现了消息的可靠传输和集群的稳定性。
摘要由CSDN通过智能技术生成

RabbitMQ 相关问题总结

 

HA 的RabbitMQ 集群架构:

 

一、RabbitMQ 如何高可用部署,如何确保集群不宕机?

RabbitMQ可用采用三种方式来部署集群:

1. cluster 

    a. 不支持跨网段,用于同一个网段内的局域网。

    b.可用随意的或者动态的增加 或者减少。

    c.节点之间需要运行相同版本的RabbitMQ 和Erlang

2.federation

    部署在广域网,允许单台服务器上的交换机或者队列,接收发布到另外一台机器上的消息和队列。

3.sholve

   和federation类似,工作在更低层次,可以应用于广域网

 

二、节点类型:

1.RAM Node

    内存节点,将所有的队列,交换机, 绑定,用户 权限与vhost的元数据存储在内存中,可以让队列和交换机声明更加的便捷。

2. Disk Node 

    将元数据存储在磁盘中,单节点系统,只运行 磁盘类型的节点,防止重启RabbitMQ时,丢失系统的配置信息。

 

三、ErLang Cookie

    ErLang Cookie 是保证不同节点之间的通讯,不同节点之间共享相同的Cookie,集群部署时候,需要copy这个数据到不同的节点,使得cookie一致。

 

四、RabbitMQ集群模式分类

1.普通模式:

     默认的集群模式,假设集群上有两个节点 node1,node2, 消息实体只存在一个节点,如果生产者生产一个消息,丢向node1,但是消费者在node2进行消费,那么就需要node2将node1中的消息取出,并且发送给消费者。

2. 镜像模式:

    需要将消费者的队列变成镜像队列,存在于多个节点。实现RabbitMQ的高可用,作用就是,消息实体会在队列之间同步。

 

 

 

RabbitMQ相关操作命令:

1. 单个节点的服务启动 停止

 

rabbitmqctl stop
rabbitmq-server -detached 


2.查询节点状态

 

rabbitmqctl cluster_status

 

调研:

1. 产品定位(能做什么,不能做什么)
2. 产品特性(适合做什么,不适合做什么)
3. 产品背景(社区活跃度,团队知名度,维护力度,口碑)
4. 产品架构(实现原理)
5. 产品安装(用户指南)
6. 产品维护(运维管理)

demo 验证

 

 

RabbitMQ 如何确保消息发送和消费:

 

 

   从RabbitMQ 结构图来看,有如下几个 过程:

1. 消息从生产者Producer发送到交换机Exchange

2.交换机根据路由规则将消息转发到相应队列

3. 队列将消息进行存储

4.消费者订阅队列消息,并进行消费

 

第一个过程  消息 从生产者发送到交换机

a.中间网络断开怎么办? 

rabbitmq 的解决方案:

1). 设置信道channel 为事务模式 

   通过channel.txSelect 开启事务,channel.txCommit 提交事务,channel.txRollback 用于事务回滚

如果在还没有提交事务之前,RabbitMQ抛出异常,我们可以 将其捕

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangxiaoming

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值