RabbitMQ介绍

rabbitmq三种模式

RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式;

单机模式:

单机模式就是demo级别的,本地启动玩玩就行,不能用在线上环境;

普通集群模式(无高可用)

    普通集群模式简单的讲就是在多台机器上分别安装rabbitmq服务,然后在多台机器上分分别启动rabbitmq实例,
创建好的queue只会放在其中一个rabbitmq实例上,其他每个实例都会同步这个queue上的元数据(元数据可以
认为是queue的一些配置信息,通过元数据可以找到queue所在的实例),你消费数据的时候,如果是连接到了其他
实例,那么该实例还是要queue所在的实例上拉取数据。

 

这种方式并不能做到高可用,仅仅是个普通的集群,只能提高吞吐量。这种集群消费者消费数据要么就是随机连接一个机器拉取数据,要么固定来接queue所在实例获取数据,但是都不能做到高可用,·前者数据获取会产生大量的网络开销,后者会产生单节点性能瓶颈。如果放 queue 的实例宕机了,会导致接下来其他实例就无法从那个实例拉取,如果你开启了消息持久化,让 RabbitMQ 落地存储消息的话,消息不一定会丢,但是必须要等这个实例恢复了,才可以继续从这个 queue实例拉取数据。

镜像集群(高可用集群)

镜像集群才是RabbitMQ所谓的高可用集群模式,镜像集群与普通集群的区别就在于镜像集群模式下,创建的queue,
不管是元数据还是queue的data都会存在于多个实例节点上,每个RabbitMQ节点上都会有一个完整的queue镜像,
每次把数据写到queue里的时候,都会自动同步消息到每个queue的节点上。

 

如果要开启镜像模式,就是在后台新增一个策略,这个策略是镜像集群模式的策略,指定的时候是可以要求数据同步到所有节点的,也可以要求同步到指定数量的节点,再次创建 queue 的时候,应用这个策略,就会自动将数据同步到其他的节点上去了。
**镜像模式的优点:**任何一个机器宕机,其他机器任然可以使用。
**镜像模式的缺点:**1、所有机器之间进行数据同步,增加性能开销,网络带宽压力大。2、可扩展性差,如果某个queue负载很重,你加机器,新增的机器也包含了这个queue的所有数据,并没有办法线性扩展你的queue。 RabbitMQ 集群之镜像同步.

关于RabbitMQ镜像对了,推荐一篇非常好的文章 RabbitMQ镜像队列实现原理.https://blog.csdn.net/jaredcoding/article/details/78112016

消息通信的概念

https://www.cnblogs.com/ysocean/p/9240877.html

5种队列+4种交换机

https://www.cnblogs.com/ysocean/p/9251884.html

 常用指令

状态查看

复制代码
# 查看节点状态
rabbitmqctl status
#查看集群节点
rabbitmqctl cluster_status #cluster_name为主节点 # 查看交换器(exchange)与队列(queue)之间的绑定关系绑定 rabbitmqctl list_bindings # 查看信道 channel rabbitmqctl list_channels # 查看交换器 exchange rabbitmqctl list_exchanges # 查看所有连接信息 connection rabbitmqctl list_connections
复制代码

队列相关

复制代码
# 查看 queue
rabbitmqctl list_queues
# 新增 queue
需安装rabbitmqadmin,否则前台新增,删除
rabbitmqadmin add_queue <queue_name> # 删除 queue rabbitmqadmin delete_queue
<queue_name>
# 清空 queue
rabbitmqctl purge_queues
<queue_name>
#往队列发送消息
rabbitmqadmin publish routing_key=<queue_name> payload="Hello, RabbitMQ!"

复制代码

用户相关

# 新建用户
rabbitmqctl add_user
# 修改用户密码
rabbitmqctl change_password
# 删除用户
rabbitmqctl delete_user
# 设置用户角色
rabbitmqctl set_user_tags

应用启停

# 启动应用
rabbitmqctl start_app
# 关闭应用, 保留 erlang 虚拟机
rabbitmqctl stop_app
# 关闭应用, 退出 erlang 虚拟机
rabbitmqctl stop

集群相关

# 加入
rabbitmqctl join_cluster
# 离开
rabbitmqctl reset

镜像队列

# 设置镜像队列
rabbitmqctl sync_queue
# 取消
rabbitmqctl cancel_sync_queue

 

posted @   阿锋888  阅读(36)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
点击右上角即可分享
微信分享提示