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
相关推荐
_.Switch21 分钟前
Python 自动化运维持续优化与性能调优
运维·开发语言·python·缓存·自动化·运维开发
南猿北者26 分钟前
Docker Volume
运维·docker·容器
矛取矛求3 小时前
Linux如何更优质调节系统性能
linux
内核程序员kevin4 小时前
在Linux环境下使用Docker打包和发布.NET程序并配合MySQL部署
linux·mysql·docker·.net
kayotin5 小时前
Wordpress博客配置2024
linux·mysql·docker
Ztiddler5 小时前
【Linux Shell命令-不定期更新】
linux·运维·服务器·ssh
小小不董5 小时前
Oracle OCP认证考试考点详解082系列16
linux·运维·服务器·数据库·oracle·dba
IPdodo全球网络5 小时前
如何利用静态住宅IP优化Facebook商城的网络稳定性与运营效率
运维·服务器
a1denzzz6 小时前
Linux系统的网络设置
linux·服务器·网络
运维&陈同学6 小时前
【模块一】kubernetes容器编排进阶实战之k8s基础概念
运维·docker·云原生·容器·kubernetes·云计算