rabbit MQ 学习

原创
2019/07/13 21:20
阅读数 91

 

 

使用比较多的是 集群模式:  镜像队列模型

 

安装 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.rpm

以上是地址

安装的依赖的

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
比如修改密码,配置 

比如  loopback_users 中的 <<"gest">>, 只保留 guest 即可

服务启动和停止

启动 rabbitmq-server start  & 

停止  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 

 

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

 

 docker 镜像 

使用 docker 镜像 使用 rabbitmq

win10 安装docker  https://blog.csdn.net/hunan961/article/details/79484098

docker 命令: 下载镜像,并启动,映射端口:
docker run -d --hostname my-rabbit -p 5672:5672 -p 15672:15672 rabbitmq:3.7.3-management

以上命令是 ,  将 docker 容器里面的 端口 ,映射到本地 端口,  5672 默认 rabbitmq端口, 

15672 就是 管理端口 

默认账号密码都是 guest 

 

 

 

https://blog.csdn.net/varyall/article/details/79111745

 

 

rabbitMQ 的事务,与发送确认模式

https://www.jianshu.com/p/1ee6be549fda

https://www.jianshu.com/p/eb7a36d25b2a

 

以上来自慕课网

 

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部