饭宝 发表于 2024-8-14 20:55:05

RabbitMQ消息队列

什么是消息队列
▪ 消息(Message)是指在应用间传送的数据
▪ 消息队列(Message Queue)是一种应用间的通信方式办理方法,确保消息的可靠转达
▪ 主流消息队列
▪ 现在主流的几大消息队列有:RabitMQ、ActiveMQ、RocketMQ、Kafka、ZeroMQ等,也有一些小众的好比Beanstalk,Redis也可以实现消息队列的功能
▪ 消息队列名词
▪ Broker:消息服务器,作为server提供消息焦点折务
▪ Topic:每条发布到Kafka集群的消息都有一个分类,这个类别被称为Topic (主题)
▪ Producer:指消息的生产者,负责发布消息到kafka broker
▪ Consumer:指消息的消费者,从kafka broker拉取数据,并消费这些已发布的消息
▪ Partition:Partition是物理上的概念,每个Topic包罗一个或多个Partition,每个Partition都是一个有序的队列。Partition中的每条消息都会被分配一个有序的id(offset)
▪ Consumer Group:消费者组,可以给每个Consumer指定消费组,若不指定消费者组,则属于默认的Group
▪ Message:消息,通信的基本单位,每个producer可以向一个topic发布一些消息
消息队列中两种工作模式
▪ Point-to-Point
▪ 一方发送消息,另外一方吸取
▪ Pub/Sub
▪ 即发布/订阅模式,消费者可以订阅一个或多个主题并利用该主题中的所有消息
消息队列的缺点
▪ 体系可用性低落
▪ 体系复杂性进步
▪ 数据一致性无法保证
RabbitMQ相关术语
(1)生产者:产生消息的历程或服务
(2)消费者:吸取消息的历程或服务
(3)队列:RabbitMQ是消息队列中间件,而真正储存消息数据的就是队列,队列可以有许多
(4)交换器:类似于网络设备交换机,它可以根据差别的关键字,将消息发送到差别的队列
(5)捏造主机:捏造主机提供了资源的逻辑分组和分隔,每一个捏造主机本质上是mini版的RabbitMQ服务器
单节点实验
101消息队列 102生产者 102消费者
1.关闭防火墙和内核
# systemctl stop firewalld
# setenforce 0
2.利用阿里的本地光盘做镜像
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
3.安装开发环境
# yum -y install erlang
4.安装rabbit环境
# yum -y install rabbitmq-server
5.启动
# systemctl start rabbitmq-server
6.检察rabbitmq当前工作状态
# rabbitmq-plugins list
7.开启插件
# rabbitmq-plugins enable rabbitmq_management
8.利用下令检察是否开启插件成功
# rabbitmq-plugins list
9.启动插件后必要重启才可生效
# systemctl restart rabbitmq-server
10.利用浏览器访问192.168.10.101:15672,用暗码账号都是guest登录进去检察,可以看到下面的图形界面
https://i-blog.csdnimg.cn/direct/e625e902f1a045928f7757831153c368.png
11.添加署理
第一步先安装nginx
# yum -y install nginx
12。在conf.d下创建并打开文件
# cd /etc/nginx/
# ls
# cd conf.d/
# vim rabbitmq.conf
server {
listen 80;
location /
{
proxy_pass http://127.0.0.1:15672;
}
}
13.利用下令测试语句是否精确
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
14.启动
# systemctl start nginx
创建程序测试环境
打开102和103
15.安装环境
分别在102.103上安装
# yum -y install python3
16.拉入安装包
pika-1.3.1-py3-none-any.whl
17.安装
# pip3 install pika-1.3.1-py3-none-any.whl
18.拉入应用程序
send_message.sh拉入102
receive_message.sh拉入103
19.启动102应用程序
# python3 send_message.sh
可以检察到生产者已经生产消息
https://i-blog.csdnimg.cn/direct/7541c005f5a541aabb796fbffe40c3f8.png
20.启动103应用程序
# python3 receive_message.sh
可以看到消息已经被消费
https://i-blog.csdnimg.cn/direct/3cbb2c7134ee45bea633d097839cb136.png
简短下令
1.列出当前捏造主机
# rabbitmqctl list
2.添加zhangsan和fll
# rabbitmqctl add_vhost zhangsan
# rabbitmqctl add_vhost fll
可以检察到:
https://i-blog.csdnimg.cn/direct/efa471c96aa54925b502ce022bea8753.png
3.创建账号并设置暗码
# rabbitmqctl add_user user1
4.利用列出可以检察到
# rabbitmqctl list_users
Listing users ...
guest
user1 []
...done.
5..给user1设置脚色management
# rabbitmqctl set_user_tags user1 management
6.列出可以检察
# rabbitmqctl list_users
Listing users ...
guest
user1
...done.
7. 设置用户张三的配置权,读写权,交换器的管理权
# rabbitmqctl set_permissions -p zhangsan user1 '.*' '.*' '.*'
集群配置
1.将101.102.103修改设置名称
hostnamectl set-hostname mq01
hostnamectl set-hostname mq02
hostnamectl set-hostname mq01
(此时开启发送信息同步)全部进行bash
2.在host中写入三个主机IP和名称
# vim /etc/hosts
192.168.10.101 mq01
192.168.10.102 mq02
192.168.10.103 mq03
3.关闭并永世关闭防火墙和se
# systemctl stop firewalld
# setenforce 0
# systemctl disable firewalld
4.利用阿里的本地光盘
rm -rf /etc/yum.repos.d/*
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
5.安装开发环境
# yum -y install erlang
6.安装rabbit环境
# yum -y install rabbitmq-server
7.启动rabbit并设置为开机自启
# systemctl start rabbitmq-server
^[# systemctl enable rabbitmq-server
8.设置插件并重启生效
# rabbitmq-plugins enable rabbitmq_management
# systemctl restart rabbitmq-server
(取消同步)
9.拷贝
# scp /var/lib/rabbitmq/./erlang.cookie mq02:/var/lib/rabbitmq/
# scp /var/lib/rabbitmq/./erlang.cookie mq02:/var/lib/rabbitmq/
10.同步后重启
root@mq01 ~]# reboot
11.检察是否成功
# ps aux | grep rabbit
https://img-home.csdnimg.cn/images/20230724024159.png?origin_url=https%3A%2F%2Fnote.youdao.com%2Fyws%2Fres%2F6%2FWEBRESOURCE8b7dfe8d4f8c2b3d27a813c2f4122d76&pos_id=epZlo1LL
(关闭同步)
12.在102和103上关闭rabbit
# rabbitmqctl stop_app
Stopping node rabbit@mq02 ...
...done.
13.在102和103上加入101集群
#rabbitmqctl join_cluster --ram rabbit@mq01
14.再启动rabbit
# rabbitmqctl start_app
15.任意一台呆板测试
# rabbitmqctl cluster_status
Cluster status of node rabbit@mq02 ...
[{nodes,[{disc,}]},
{running_nodes,},
{cluster_name,>},
{partitions,[]}]
...done.
出现以上效果为成功

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: RabbitMQ消息队列