RabbitMQ介绍
RabbitMQ 是一款开源的消息队列软件,最初由 LShift 公司开发,后来成为 Pivotal Software(现在是 VMware 的一部分)的一部分。它是基于 AMQP(高级消息队列协议)标准的消息中间件,旨在帮助不同应用程序之间进行可靠的数据传输和通信。
RabbitMQ 提供了高度灵活的消息队列机制,可以在分布式环境中实现应用程序之间的异步通信。它支持多种消息传递模式,包括点对点、发布/订阅、请求/响应等,能够满足各种复杂的消息通信需求。
作为一种可靠的消息代理,RabbitMQ 提供了持久化、传输确认、发布者确认等机制,确保消息在传输过程中的可靠性和稳定性。此外,RabbitMQ 还提供了灵活的插件系统,可以扩展其功能以满足特定的业务需求。
RabbitMQ 被广泛应用于构建分布式系统、微服务架构和事件驱动的应用程序中,为开发者提供了一个可靠、健壮的消息传递解决方案。它具有良好的可扩展性和高性能,能够处理大规模的消息流量,并且易于集成到各种现有的应用系统中。
总的来说,RabbitMQ 是一款功能强大的消息队列软件,为构建分布式系统和解耦应用程序提供了可靠的消息传递基础设施,受到广泛的欢迎和应用。
Docker安装RabbitMQ
Docker安装RabbitMQ介绍
RabbitMQ是用Erlang编写的,安装时需要注意 RabbityMQ 所依赖的 Erlang 版本,安装比较麻烦,建议使用Docker安装RabbitMQ,安装简单。
Docker安装RabbitMQ步骤:
- 拉取镜像
- 创建并运行容器
- 宿主机访问RabbitMQ控制台
Docker安装RabbitMQ详细步骤
拉取镜像
命令说明:
# 拉取RabbitMQ镜像 docker pull rabbitmq:3.8-management
操作示例:
[root@192 conf]# docker pull rabbitmq:3.8-management 3.8-management: Pulling from library/rabbitmq d7bfe07ed847: Pull complete a8249261ea33: Pull complete a6308381df18: Pull complete 626529a25d27: Pull complete 20919addf7c9: Pull complete c61a1fb2610f: Pull complete 1f73e996a37b: Pull complete 90d8751c13b1: Pull complete 8fe6b167bcbe: Pull complete Digest: sha256:4206c16c09a58d0a604668e91227c32f4a222368e796bfb7bf2e0d0d160ef97a Status: Downloaded newer image for rabbitmq:3.8-management docker.io/library/rabbitmq:3.8-management [root@192 conf]#
创建并运行容器
命令说明:
# 创建RabbitMQ容器, 15672: web管理的端口, 5672: 客户端连接操作端口 # RABBITMQ_DEFAULT_USER:RabbitMQ服务器默认账号 # RABBITMQ_DEFAULT_PASS:RabbitMQ服务器默认密码 docker run -di --name=crabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:3.8-management # 查看日志 docker logs -f crabbitmq # 相关命令 docker ps 查看docker容器 docker start crabbitmq 启动 docker stop crabbitmq 暂停 docker restart crabbitmq 重启 docker logs -f crabbitmq 查看启动日志
操作示例:
[root@192 conf]# docker run -di --name=crabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:3.8-management 8b83fb928f7e70a8f86f86de9f32617efe052ca92a08349a83bb40dcef8769a2 [root@192 conf]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8b83fb928f7e rabbitmq:3.8-management "docker-entrypoint.s…" 34 seconds ago Up 33 seconds 4369/tcp, 0.0.0.0:1883->1883/tcp, :::1883->1883/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp, 0.0.0.0:25672->25672/tcp, :::25672->25672/tcp, 0.0.0.0:61613->61613/tcp, :::61613->61613/tcp, 15691-15692/tcp crabbitmq [root@192 conf]# docker logs -f crabbitmq WARNING: 'docker-entrypoint.sh' generated/modified the RabbitMQ configuration file, which will no longer happen in 3.9 and later! (https://github.com/docker-library/rabbitmq/pull/424) Generated end result, for reference: ------------------------------------ loopback_users.guest = false listeners.tcp.default = 5672 default_pass = admin default_user = admin management.tcp.port = 15672 ------------------------------------ Configuring logger redirection 2024-03-28 06:39:30.833 [debug] <0.288.0> Lager installed handler error_logger_lager_h into error_logger 2024-03-28 06:39:30.846 [debug] <0.291.0> Lager installed handler lager_forwarder_backend into error_logger_lager_event 2024-03-28 06:39:30.846 [debug] <0.306.0> Lager installed handler lager_forwarder_backend into rabbit_log_federation_lager_event 2024-03-28 06:39:30.846 [debug] <0.294.0> Lager installed handler lager_forwarder_backend into rabbit_log_lager_event 2024-03-28 06:39:30.846 [debug] <0.297.0> Lager installed handler lager_forwarder_backend into rabbit_log_channel_lager_event 2024-03-28 06:39:30.846 [debug] <0.300.0> Lager installed handler lager_forwarder_backend into rabbit_log_connection_lager_event 2024-03-28 06:39:30.846 [debug] <0.303.0> Lager installed handler lager_forwarder_backend into rabbit_log_feature_flags_lager_event 2024-03-28 06:39:30.846 [debug] <0.309.0> Lager installed handler lager_forwarder_backend into rabbit_log_ldap_lager_event 2024-03-28 06:39:30.847 [debug] <0.312.0> Lager installed handler lager_forwarder_backend into rabbit_log_mirroring_lager_event 2024-03-28 06:39:30.848 [debug] <0.315.0> Lager installed handler lager_forwarder_backend into rabbit_log_prelaunch_lager_event 2024-03-28 06:39:30.850 [debug] <0.318.0> Lager installed handler lager_forwarder_backend into rabbit_log_queue_lager_event 2024-03-28 06:39:30.852 [debug] <0.321.0> Lager installed handler lager_forwarder_backend into rabbit_log_ra_lager_event 2024-03-28 06:39:30.853 [debug] <0.324.0> Lager installed handler lager_forwarder_backend into rabbit_log_shovel_lager_event 2024-03-28 06:39:30.853 [debug] <0.327.0> Lager installed handler lager_forwarder_backend into rabbit_log_upgrade_lager_event 2024-03-28 06:39:30.872 [info] <0.44.0> Application lager started on node rabbit@8b83fb928f7e 2024-03-28 06:39:31.177 [info] <0.44.0> Application mnesia started on node rabbit@8b83fb928f7e 2024-03-28 06:39:31.178 [info] <0.273.0> Starting RabbitMQ 3.8.34 on Erlang 24.3.4.1 [jit] Copyright (c) 2007-2022 VMware, Inc. or its affiliates. Licensed under the MPL 2.0. Website: https://rabbitmq.com ## ## RabbitMQ 3.8.34 ## ## ########## Copyright (c) 2007-2022 VMware, Inc. or its affiliates. ###### ## ########## Licensed under the MPL 2.0. Website: https://rabbitmq.com Erlang: 24.3.4.1 [jit] TLS Library: OpenSSL - OpenSSL 1.1.1o 3 May 2022 Doc guides: https://rabbitmq.com/documentation.html Support: https://rabbitmq.com/contact.html Tutorials: https://rabbitmq.com/getstarted.html Monitoring: https://rabbitmq.com/monitoring.html Logs: <stdout> Config file(s): /etc/rabbitmq/rabbitmq.conf 省略其他...
宿主机访问RabbitMQ控制台
在创建容器时,指定了RabbitMQ的默认账号是admin,密码是admin。
在宿主机浏览器中访问:http://LinuxIP:15672/
添加用户和配置虚拟主机Virtual Hosts
添加用户
除了默认的用户,还可以新建用户,操作如下图:
角色说明
用户角色分为6类,超级管理员, 监控者, 策略制定者, 普通管理者,模仿者,以及其他。
- Admin(超级管理员)
可以登陆管理控制台,可以查看所有的信息,并且可以对用户,策略进行操作。
- Monitoring(监控者)
可以登陆管理控制台,可以查看RabbitMQ节点的相关信息。
- Policymaker(策略制定者)
可以登陆管理控制台,可以对policy进行管理。但无法查看节点的相关信息。
- Management(普通管理者)
可以登陆管理控制台,无法看到节点信息,也无法对策略进行管理
- Impersonator(模仿者)
不能登录后台,通常就是普通的生产者和消费者。
- none(其他)
不能登录后台,通常就是普通的生产者和消费者。
刚创建的用户是没有配置虚拟主机的。
创建虚拟主机Virtual Hosts
RabbitMQ的Virtual Host(虚拟消息服务器),每个Virtual Host相当于一个相对独立的RabbitMQ服务器;每个Virtual Host之间是相互隔离的,exchange、queue、message不能互通。
RabbitMQ和MySQL来类比:RabbitMQ相当于MySQL,RabbitMQ中的Virtual Host就相当于MySQL中的一个库。
创建虚拟主机Virtual Hosts,操作如下图:
设置用户的虚拟主机
设置用户的虚拟主机,操作如下图:
到此,完成了添加用户,创建虚拟主机,设置用户的虚拟主机。