使用比较多的是 集群模式: 镜像队列模型c++
安装 rabbitMQ数据库
wget https://www.rabbitmq.com/releases/erlang/erlang-18.3-1.el7.centos.x86_64.rpm
wget http://repo.iotti.biz/CentOS/7/x86_64/socat-1.7.3.2-5.el7.lux.x86_64.rpm
wget https://www.rabbitmq.com/releases/rabbitmq-server/v3.6.5/rabbitmq-server-3.6.5-1.suse.noarch.rpmvim
以上是地址centos
安装的依赖的网络
yum install build-essential openssl openssl-devel unixODBC unixODBC-devel make gcc gcc-c++ kernel-devel m4 ncurses-devel tk tc xz
修改配置架构
vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app
好比修改密码,配置 app
好比 loopback_users 中的 <<"gest">>, 只保留 guest 便可oop
服务启动和中止ui
启动 rabbitmq-server start & spa
中止 rabbitmqctl app_stop 或者 rabbitmq-server stop
若是 rabbitmqctl stop_app 也 中止不了。
那么就去到 rabbitmqctl 对应目录下去执行
好比 个人 rabbitmq 安装后的目录是
/usr/lib/rabbitmq
而后进入 cd /usr/lib/rabbitmq/bin
就看到了
rabbitmqctl rabbitmq-defaults rabbitmq-env rabbitmq-plugins rabbitmq-server
执行 rabbitmqctl stop_app 就中止了
lsof -i:5672
也能够查看 rabbitmq 是否关闭或者启动了
管理插件:
启用管控台:好比在 /usr/lib/rabbitmq/bin 目录下 敲命令:
rabbitmq-plugins enbale rabbitmq_management
管控台的端口号: 15672
访问地址: 地址xxx:15672/
登录的用户名和密码就是前面改的 : guest
rabbitMQ 架构模型
生产者 生产消息, 而后 到 exchange 交换机里面, 根据 交换规则, 路由到 不一样的 queues 队列里面,而后 消费者 clients 去消费 消息
Channel : 网络通道,几乎全部的操做都在 channel中进行, channel是进行消息读写的通道。
客户端可创建多个 channel ,每一个 channel表明义工会话任务。
virtual host
生产者 生产消息, 发送 消息 到 Message , 而后 根据 路由规则, 到 exchange , exchange 根据 和 Message Queue 的绑定路由键, 将消息路由到 对应的 queuee 上,而后you 监听到 message queue 的消费者 去消费 消息
保障消息100% 生产投递成功
上图指得是 生产端 生产的消息
生产者 Sender 产生消息的同时, 会将对应的业务数据和 消息记录日志记录到 数据库里面。
把消息发送给MQ后, 经过 Confirm Listener 来 收到 确认消息投递成功。
若是 Confirm Listener 消息成功以后 ,更新 状态 status=1 成功了。
不然, 经过定时任务判断消息状态为0 的消息, 也是找到未成功发送的消息,而后去重发给 MQ
至于消费端是否重复收到消息 产生的 影响,确定要 消息端 本身去保证 消息处理的 幂等性了。
以上来自慕课网