RabbitMQ

RabbitMQ是实现了AMQP(高级消息队列协议)的开源消息代理软件。RabbitMQ服务器是用Erlang语言编写的,而聚类和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。

AMQP从上到下分为:Model(提供命令)、Session(协议处理)、Transport(数据传输)

1. 结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KFAFNrSG-1581650249304)(/Users/zhzhl/Library/Mobile Documents/comappleCloudDocs/typora/java/高并发中间件/.assets/image-20200214104930569.png)]

  1. Broker RabbitMQ服务器(或集群中的一个实例)

  2. vhost 可以对每个vhost进行权限设置,默认“/”

  3. queue 一个vhost包含多个queue

  4. exchange 交换机,默认发送到以“队列名"为bindingKey的队列。

  5. bind 交换机与queue的绑定。direct与topic用的多。

  6. productor 消息生产者

  7. connection 连接 一个连接可以建立多个channel

    fanout类型(bindingKey类型):转发所有queue
    direct类型(bindingKey类型):通过bindkey匹配消息的routingKey,发送给特点的queue
    topic类型(bindingKey类型):提供模糊匹配
    header类型:message 的header 匹配

  8. channel 通道 queue、exchange等都是基于channel操作的

  9. message 分为label 和 body。

    label 在label设置routingKey,用于bind做匹配

    body 消息体

  10. consumer 消费者

  11. Qos 预推送 MQ 每次推送给消费者的消息数量。比较重要的调优参数

2. 角色划分

none、management、policymaker、monitoring、administrator

See:https://www.rabbitmq.com/management.html

3. 集群高可用

相同的.erlang.cookie文件复制到不同的集群

同步方式:

  1. RabbitMQ支持

普通模式 默认 同步元数据
镜像模式 通过策略设置 同步所有数据同步

  1. 广域网集群(版本不同、网络差都可以,但是同步性比较差)
    Federation Shovel

4. 持久化机制

消息、队列、交换器都可以持久化

可以设置阈值,超过阈值后会阻塞

  1. 内存

    最大内存

    内存换页阈值

  2. 磁盘

    剩余磁盘阈值:可以设置与内存相当

5. 操作工具

rabbitmqctl

Rabbitmq-plugins

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值