前言
RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
目录
介绍 RabbitMQ系统结构
RabbitMQ成员
优点
缺点
介绍 RabbitMQ系统结构
RabbitMQ成员
- Broker 主机
- Virtual host 虚拟主机
- Connection 连接
- Channel 通道
- Exchange 交换机 (分发消息)
- Queue 队列 (存储消息的位置)
- Binding 绑定(绑定交换机和队列 )
- Producer 生产者 (发消息)
- Consumer 消费者 (处理消息)
- Routing Key (路由key, 决定消息的分配)
以上关系可简化为 Producer -> Broker -> Concumer
优点
1. 解耦,比如说系统A会交给系统B去处理一些事情,通过将A,B中间加入消息队列,A将要处理的事情交给消息队列 ,B的输入来源于与消息队列
2.有序性。先来先处理,比如一个系统处理某件事需要很长一段时间,但是在处理这件事情时候,有其他人也发出了请求,可以把请求放在消息队里,一个一个来处理
3.消息路由:按照不同的规则,将队列中消息发送到不同的其他队列中
4.异步处理: 处理一件A事情,可以拆分成B,C,D三个独立的环节,那么消息可以分发到三个队列中同时进行.
缺点
- 系统可用性降低 (需要保证RabbitMQ高可用,才能维持整个系统的运转.)
RabbitMQ 有三种模式
docker搭建 Haproxy+rabbitmq集群_fqydhk的专栏-CSDN博客交流QQ号:555913397有什么问题可以加群大家一起交流Docker安装安装环境:Centos71.安装docker yum install -y docker2.配置阿里云docker镜像服务在阿里云容器镜像服务里有个镜像加速器,在里面可以得到私有的镜像加速地址下面编辑docker镜像加速vi /etc/docker/daemon.json会得到如下内容{}下面来改造它{ "r...https://blog.csdn.net/fqydhk/article/details/80430503
- 系统复杂度提高 (需要注意消息丢失和重复处理的问题.)
结合Redis进行登记和去重处理。
- 一致性问题 (需要注意,B,C,D三件事情没有同时成功处理时,导致结果不一致)
结合日志系统,重发消息到某个队列.