rabbit MQ 学习

 

 

使用比较多的是 集群模式:  镜像队列模型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 

 

至于消费端是否重复收到消息 产生的 影响,确定要 消息端 本身去保证 消息处理的 幂等性了。

 

 

 

 

 

 

 

 

 

以上来自慕课网

相关文章
相关标签/搜索