RabbitMQ消息队列

一,CentOS7下安装RabbitMQ(单机)

1:安装erlang

复制代码
//切换阿里源下载
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 all4
[root@bogon ~]# yum -y install erlang

2:安装rabbtimq

bash 复制代码
[root@bogon ~]# yum -y install rabbitmq-server
[root@bogon ~]# ps  aux | grep  rabbit
rabbitmq   1759  2.4  4.5 618480 44184 ?        Ssl  11:25   0:00 /usr/lib64/erlang/erts-5.10.4/bin/beam -W w -K true -A30 -P 1048576 -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/../ebin -noshell -noinput -s rabbit boot -sname rabbit@bogon -boot start_sasl -config /etc/rabbitmq/rabbitmq -kernel inet_default_connect_options [{nodelay,true}] -sasl errlog_type error -sasl sasl_error_logger false -rabbi error_logger {file,"/var/log/rabbitmq/rabbit@bogon.log"} -rabbit sasl_error_logger {file,"/var/log/rabbitmq/rabbit@bogon-sasl.log"} -rabbit enabled_plugins_file "/etc/rabbitmq/enabled_plugins" -rabbit plugins_dir "/usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/../plugins" -rabbit plugins_expand_dir "/var/lib/rabbitmq/mnesia/rabbit@bogon-plugins-expand" -os_mon start_cpu_sup false -os_mon start_disksup false -os_mon start_memsup false -mnesia dir "/var/lib/rabbitmq/mnesia/rabbit@bogon" -kernel inet_dist_listen_min 25672 -kernel inet_dist_listen_max 25672
rabbitmq   1774  0.0  0.1  35216  1676 ?        S    11:25   0:00 /usr/lib64/erlang/erts-5.10.4/bin/epmd -daemon
rabbitmq   1831  0.0  0.2  35180  2200 ?        Ss   11:25   0:00 inet_gethost 4
rabbitmq   1832  0.0  0.2  41532  2500 ?        S    11:25   0:00 inet_gethost 4
root       1836  0.0  0.2 112840  2208 pts/0    S+   11:26   0:00 grep --color=auto rabbit
[root@bogon ~]# 

3:开启web管理控制台

bash 复制代码
[root@bogon ~]# rabbitmq-plugins list
[ ] amqp_client                       3.3.5
[ ] cowboy                            0.5.0-rmq3.3.5-git4b93c2d
[ ] eldap                             3.3.5-gite309de4
[ ] mochiweb                          2.7.0-rmq3.3.5-git680dba8
[ ] rabbitmq_amqp1_0                  3.3.5
[ ] rabbitmq_auth_backend_ldap        3.3.5
[ ] rabbitmq_auth_mechanism_ssl       3.3.5
[ ] rabbitmq_consistent_hash_exchange 3.3.5
[ ] rabbitmq_federation               3.3.5
[ ] rabbitmq_federation_management    3.3.5
[ ] rabbitmq_management               3.3.5
[ ] rabbitmq_management_agent         3.3.5
[ ] rabbitmq_management_visualiser    3.3.5
[ ] rabbitmq_mqtt                     3.3.5
[ ] rabbitmq_shovel                   3.3.5
[ ] rabbitmq_shovel_management        3.3.5
[ ] rabbitmq_stomp                    3.3.5
[ ] rabbitmq_test                     3.3.5
[ ] rabbitmq_tracing                  3.3.5
[ ] rabbitmq_web_dispatch             3.3.5
[ ] rabbitmq_web_stomp                3.3.5
[ ] rabbitmq_web_stomp_examples       3.3.5
[ ] sockjs                            0.3.4-rmq3.3.5-git3132eb9
[ ] webmachine                        1.10.3-rmq3.3.5-gite9359c7
[root@bogon ~]# rabbitmq-plugins enable rabbitmq_management       
The following plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@bogon ~]# rabbitmq-plugins list
[e] amqp_client                       3.3.5
[ ] cowboy                            0.5.0-rmq3.3.5-git4b93c2d
[ ] eldap                             3.3.5-gite309de4
[e] mochiweb                          2.7.0-rmq3.3.5-git680dba8
[ ] rabbitmq_amqp1_0                  3.3.5
[ ] rabbitmq_auth_backend_ldap        3.3.5
[ ] rabbitmq_auth_mechanism_ssl       3.3.5
[ ] rabbitmq_consistent_hash_exchange 3.3.5
[ ] rabbitmq_federation               3.3.5
[ ] rabbitmq_federation_management    3.3.5
[E] rabbitmq_management               3.3.5
[e] rabbitmq_management_agent         3.3.5
[ ] rabbitmq_management_visualiser    3.3.5
[ ] rabbitmq_mqtt                     3.3.5
[ ] rabbitmq_shovel                   3.3.5
[ ] rabbitmq_shovel_management        3.3.5
[ ] rabbitmq_stomp                    3.3.5
[ ] rabbitmq_test                     3.3.5
[ ] rabbitmq_tracing                  3.3.5
[e] rabbitmq_web_dispatch             3.3.5
[ ] rabbitmq_web_stomp                3.3.5
[ ] rabbitmq_web_stomp_examples       3.3.5
[ ] sockjs                            0.3.4-rmq3.3.5-git3132eb9
[e] webmachine                        1.10.3-rmq3.3.5-gite9359c7
[root@bogon ~]# 

下面是一个将这些插件和版本信息整理成表格的形式,并解释每列的含义:

|-----------------------------------|----------------------------|--------------------------------------------------------------------------------|
| 插件名称 | 版本号 | 说明 |
| amqp_client | 3.3.5 | AMQP客户端库,用于与RabbitMQ服务器进行AMQP协议通信。 |
| cowboy | 0.5.0-rmq3.3.5-git4b93c2d | 一个用于Erlang的高效、轻量级的HTTP服务器和REST框架,可能在此版本中为RabbitMQ定制或扩展。 |
| eldap | 3.3.5-gite309de4 | 可能是RabbitMQ用于LDAP身份验证的插件,但这里的版本表明它可能包含了对LDAP支持的自定义或额外更新。 |
| mochiweb | 2.7.0-rmq3.3.5-git680dba8 | 另一个Erlang的HTTP服务器库,可能为RabbitMQ提供了Web界面的底层支持或其他Web服务功能。 |
| rabbitmq_amqp1_0 | 3.3.5 | 支持AMQP 1.0协议的RabbitMQ插件,允许RabbitMQ与遵循AMQP 1.0的客户端进行通信。 |
| rabbitmq_auth_backend_ldap | 3.3.5 | 提供通过LDAP服务器进行RabbitMQ用户认证的插件。 |
| rabbitmq_auth_mechanism_ssl | 3.3.5 | 通过SSL/TLS支持更安全的认证机制的插件。 |
| rabbitmq_consistent_hash_exchange | 3.3.5 | 实现一致性哈希交换类型的插件,可能用于改进消息分发和负载均衡。 |
| rabbitmq_federation | 3.3.5 | 允许RabbitMQ集群跨网络边界安全地交换消息的插件。 |
| rabbitmq_federation_management | 3.3.5 | 提供RabbitMQ Federation插件的管理和监控界面。 |
| rabbitmq_management | 3.3.5 | RabbitMQ的管理插件,提供Web界面来监控和控制RabbitMQ服务器。 |
| rabbitmq_management_agent | 3.3.5 | 与rabbitmq_management插件相关的组件,可能用于管理界面与RabbitMQ服务器的交互。 |
| rabbitmq_management_visualiser | 3.3.5 | RabbitMQ管理插件的可视化工具,用于以图形方式显示RabbitMQ的内部状态。 |
| rabbitmq_mqtt | 3.3.5 | 允许RabbitMQ通过MQTT协议接收和发送消息的插件。 |
| rabbitmq_shovel | 3.3.5 | 用于RabbitMQ之间高效复制或迁移消息的数据迁移插件。 |
| rabbitmq_shovel_management | 3.3.5 | 提供rabbitmq_shovel插件的管理和监控界面。 |
| rabbitmq_stomp | 3.3.5 | 允许RabbitMQ通过STOMP协议接收和发送消息的插件。 |
| rabbitmq_test | 3.3.5 | 可能是用于RabbitMQ的测试或演示的插件。 |
| rabbitmq_tracing | 3.3.5 | 提供消息跟踪功能的插件,帮助调试和监控RabbitMQ中的消息流。 |
| rabbitmq_web_dispatch | 3.3.5 | 可能用于RabbitMQ的Web请求路由或分发的插件。 |
| rabbitmq_web_stomp | 3.3.5 | 允许通过Web Stomp协议与RabbitMQ进行通信的插件。 |
| rabbitmq_web_stomp_examples | 3.3.5 | 提供rabbitmq_web_stomp插件的使用示例。 |
| sockjs | 0.3.4-rmq3.3.5-git3132eb9 | 一个浏览器上的WebSocket库,支持在不支持WebSocket的旧浏览器上模拟WebSocket连接,这里可能是为RabbitMQ的Web客户端定制的。 |
| webmachine | 1.10.3-rmq3.3.5-gite9359c7 | 一个Erlang库,用于构建符合REST原则的Web应用程序,这里可能是RabbitMQ管理界面或其他Web服务的底层框架。 |

4:关闭防火墙并去访问浏览器访问

bash 复制代码
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# setenforce 0
[root@bogon ~]# systemctl restart rabbitmq-servser

注意账号是guest密码也是guest

5.:下载nginx服务

bash 复制代码
[root@bogon ~]# yum -y install nginx

6:配置nginx

bash 复制代码
[root@bogon ~]# cd /etc/nginx/
[root@bogon nginx]# cd conf.d/
[root@bogon conf.d]# vim rabbitmq.conf

server {
        listen  80;
        location / {
        proxy_pass http://127.0.0.1:15672;


}





}
[root@bogon conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@bogon conf.d]# nginx

注意这是有nginx做代理的可以不加端口

7:配置其他两台主机

(1)安装pythom3

bash 复制代码
[root@bogon ~]# yum -y install python3
[root@bogon ~]# pip3 install pika-1.3.1-py3-none-any.whl   //函数库

函数库的包的位置

链接: 百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/12Ly7dKHi5Z7gQJqqioUOuA?pwd=wn78 提取码: wn78 复制这段内容后打开百度网盘手机App,操作更方便哦

(2)测试

把脚本分别给102,103

链接: https://pan.baidu.com/s/1HyYDx8AN7iilrJvaW7a64g?pwd=w4d6 提取码: w4d6 复制这段内容后打开百度网盘手机App,操作更方便哦

bash 复制代码
[root@103 ~]# python3  send_message.sh
bash 复制代码
[root@102 ~]# python3  receive_message.sh

8.rabbit命令

|-------|---------------------------------------------------------|------------------|
| 类别 | 命令 | 描述 |
| 虚拟机管理 | rabbitmqctl list_vhosts | 列出所有的虚拟主机 |
| | rabbitmqctl add_vhost | 创建新的虚拟主机 |
| | rabbitmqctl delete_vhost | 删除指定的虚拟主机 |
| 用户管理 | rabbitmqctl list_users | 列出所有用户 |
| | rabbitmqctl add_user | 创建新用户 |
| | rabbitmqctl change_password | 更改用户密码 |
| | rabbitmqctl delete_user | 删除用户 |
| | rabbitmqctl clear_password | 清除用户密码(设置为无密码) |
| 角色管理 | rabbitmqctl set_user_tags | 赋予用户特定角色 |
| | rabbitmqctl set_permissions -p | 设置用户对虚拟主机的权限 |
| 权限管理 | rabbitmqctl list_user_permissions | 列出用户的权限 |
| | rabbitmqctl list_permissions -p | 列出指定虚拟主机下所有用户的权限 |
| | rabbitmqctl clear_permissions -p | 清除用户在指定虚拟主机上的权限 |
| 插件管理 | rabbitmq-plugins list | 列出所有可用的插件 |
| | rabbitmq-plugins enable | 启用插件 |
| | rabbitmq-plugins disable | 禁用插件 |
| 限制 | rabbitmqctl set_vhost_limits -p '{"max-connections": }' | 设置虚拟主机的最大连接数 |
| | rabbitmqctl set_vhost_limits -p '{"max-queues": }' | 设置虚拟主机中最大的队列数 |
| 其他 | rabbitmqctl list_exchanges | 列出所有的交换器 |
| | rabbitmqctl list_bindings | 列出所有的绑定关系 |
| | rabbitmqctl list_queues | 列出所有的队列 |
| | rabbitmqctl status | 查看RabbitMQ的运行信息 |

二,集群RabbitMQ

1:实验环境

|----------|----------------|------|
| 主机名 | ip | 节点类型 |
| centos01 | 192.168.10.102 | 磁盘节点 |
| centos01 | 192.168.10.102 | 内存节点 |
| centos01 | 192.168.10.102 | 内存节点 |

2:配置hosts以及hostname

bash 复制代码
三台机器设置hostname
hostnamectl set-hostname centos01
hostnamectl set-hostname centos02
hostnamectl set-hostname centos03
192.168.10.101    centos01
192.168.10.102    centos02
192.168.10.103    centos03

3:关闭selinux以及firewalld

bash 复制代码
setenforce 0
systemctl stop firewalld

4:安装rabbitmq

三台机器都要安装,步骤参考上面

5:启动服务

三台机器都启动起来

bash 复制代码
systemctl start rabbitmq-server

6:安装management插件

三台机器都要开启

bash 复制代码
rabbitmq-plugins enable rabbitmq_management
bash 复制代码
[root@mq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie   mq3:/var/lib/rabbitmq/
[root@mq1 ~]# scp /var/lib/rabbitmq/.erlang.cookie  mq2:/var/lib/rabbitmq/.erlang.cookie 

7:分配节点

bash 复制代码
 rabbitmqctl stop_app

8:将centos02作为内存节点连接到centos01

bash 复制代码
rabbitmqctl join_cluster --ram rabbit@centos01

9:开启rabbitmq

bash 复制代码
rabbitmqctl start_app

10:查看集群状态

bash 复制代码
rabbitmqctl cluster_status
相关推荐
用户97183563346613 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪14 小时前
linux 拷贝文件或目录到指定的位置
linux
大树881 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
Inhand陈工1 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智1 天前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩1 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言