RabbitMQ 安装与操作
RabbitMQ 安装
RabbitMQ 简介
RabbitMQ is lightweight and easy to deploy on premises and in the cloud. It supports multiple messaging protocols. RabbitMQ can be deployed in distributed and federatedconfigurations to meet high-scale, high-availability requirements.
起源
RabbitMQ是一个“传统的”消息代理,它实现了各种消息传递协议。它是首批实现合理级别的功能,客户端库,开发工具和质量文档的开源消息代理商之一。RabbitMQ最初是为了实现AMQP而开发的,AMQP是一种用于使用强大路由功能进行消息传递的开放协议。虽然Java具有像JMS这样的消息传递标准,但对于需要分布式消息传递的非Java应用程序来说是没有用的,这些应用程序严重限制了任何集成场景,微服务或单片集成。随着AMQP的出现,跨语言的灵活性对于开源消息代理来说变得真实。
RabbitMQ术语
RabbitMQ和一般的消息传递使用了一些术语。
Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输,
Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。
Queue:消息的载体,每个消息都会被投到一个或多个队列。
Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来.
Routing Key:路由关键字,exchange根据这个关键字进行消息投递。
vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离。
Producer:消息生产者,就是投递消息的程序.
Consumer:消息消费者,就是接受消息的程序.
Channel:消息通道,在客户端的每个连接里,可建立多个channel.
RabbitMQ 安装
在安装RabbitMQ时,必须先安装一个支持的erlang/otp版本。我们使用yum命令来安装Erlang。which-erlang可以查看版本信息。
yum version locking plugin is recommended to prevent unwanted Erlang upgrades. This is highly recommended when Erlang is installed via the Erlang Solutions repository.
建议使用yum版本锁定插件来防止不需要的Erlang升级。当通过Erlang解决方案存储库安装Erlang时,强烈建议您这么做。
安装命令
Installing on RPM-based Linux (RHEL, CentOS, Fedora, openSUSE) 基于RPM的安装
wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm
安装erlang
yum install -y erlang-19.0.4-1.el7.centos.x86_64.rpm
下载rabbitmq
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm
公共签名密钥
rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc
安装rabbitmq
yum install -y rabbitmq-server-3.6.6-1.el7.noarch.rpm
或者选择下载安装包手动安装;
以下是下载软件包的GitHub地址:
下载时请注意版本兼容性带来的不必要的问题!以及版本与您的体统是否匹配!
操作命令
启动守护进程
安装RabbitMQ服务器软件包时,默认情况下服务器不会作为守护程序启动。在系统引导时默认启动守护进程,如管理员运行
chkconfig rabbitmq-server on
启动/停止
As an administrator, start and stop the server as usual
/sbin/service rabbitmq-server start
/sbin/service rabbitmq-server stop
查看状态
查看运行状态
rabbitmqctl status
开启/关闭管理扩展WBU-UI
开启可视界面操作Management Plugin
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins disable rabbitmq_management
注意:插件的启用和关闭都不会影响当前运行rabbitmq节点。必须重新启动之后才会影响。
重置
将RabbitMQ节点返回到其初始状态。为了reset和 force_reset成功,RabbitMQ应用程序必须停止,例如 stop_app。
rabbitmqctl reset
rabbitmqctl是一个用于管理RabbitMQ代理的命令行工具。它通过连接到其中一个代理节点来执行所有操作。
如果代理未运行,无法到达或由于Erlang Cookie不匹配而拒绝连接,则会显示诊断信息。
关闭
关闭运行RabbitMQ的Erlang进程。该命令被阻塞,并在Erlang进程退出后返回。如果RabbitMQ未能停止,它将返回一个非零的退出代码。
rabbitmqctl shutdown
重置
启动RabbitMQ应用程序。该命令通常在执行需要RabbitMQ应用程序停止的其他管理操作(例如 重置)之后运行。例如,要指示RabbitMQ节点启动RabbitMQ应用程序。
rabbitmqctl start_app
启动/停止
启动RabbitMQ应用程序。该命令通常在执行需要RabbitMQ应用程序停止的其他管理操作(例如 重置)之后运行。例如,要指示RabbitMQ节点启动RabbitMQ应用程序。
rabbitmqctl start_app
rabbitmqctl stop_app
集群命令join_cluster
添加账户
rabbitmqctl add_user username password
添加账户标签(administrator)
rabbitmqctl set_user_tags username administrator
关于标签以及账户的操作权限可以查看Permissions。这里演示为赋予用户管理员的权限。以便登陆WEB-UI进行管理操作。
NOTE:
本机启动默认为hostname!
访问管理扩展时,默认的用户guest只能在本机登录,在其他机器登录需要新增用户!
更多命令参见官方使用手册,或者是命令rabbitmqctl help,RabbitMQ的日志请参见http://www.rabbitmq.com/logging.html
Note:The server is set up to run as system user rabbitmq. If you change the location of the node database or the logs, you must ensure the files are owned by this user (and also update the environment variables).
安装/集群过程中可能遇到的问题
Package: rabbitmq-server-3.6.11.903-1.el6.noarch (/rabbitmq-server-3.6.11.903-1.el6.noarch) Requires: socat
你的系统可能缺少 socat 包。您可以选择以下两种方式安装socat
(1). yum install socat
(2). 执行以下命令手动安装socat
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/Packages/s/socat-1.7.2.3-1.el6.x86_64.rpm
rpm -ivh socat-1.7.2.3-1.el6.x86_64.rpm
在 join_cluster 的过程中,在令两台机器erlang.cooking一致之后执行join_cluster的过程中你可能遇到
Authentication failed (rejected by the remote node), please check the Erlang cookie
这个时候,你需要 ps -ef | grep rabbitmq 。kill 掉相关进程,然后重新"/sbin/service rabbitmq-server start"。
参考
The RPM Package Manager (RPM) is a powerful package management system capable of
building computer software from source into easily distributable packages
installing, updating and uninstalling packaged software
querying detailed information about the packaged software, whether installed or not
verifying integrity of packaged software and resulting software installation
rpm -i example.rpm 安装 example.rpm 包;
rpm -iv example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息;
rpm -ivh example.rpm 安装 example.rpm 包并在安装过程中显示正在安装的文件信息及安装进度;
查看安装完成的软件
rpm -qa | grep jdk
AMQP is an open Internet (or “wire”) Protocol standard for message-queuing communications.
GNU Wget is a free software package for retrieving files using HTTP, HTTPS, FTP and FTPS the most widely-used Internet protocols. It is a non-interactive commandline tool, so it may easily be called from scripts,
cron
jobs, terminals without X-Windows support, etc.
Yum is an automatic updater and package installer/remover for rpm systems. It automatically computes dependencies and figures out what things should occur to install packages. It makes it easier to maintain groups of machines without having to manually update each one using rpm. Yum has a plugin interface for adding simple features. Yum can also be used from other python programs via its module inteface.
查看已经安装的包 yum list installed
用YUM安装软件包命令:yum install ~
用YUM删除软件包命令:yum remove ~
修改 Linux 所有者和文件所在组
chgrp username filename
chown username filename
Linux 文件权限
r:可读(4)w:可写(2),对于目录来说表示可在目录中新建文件x:可执行(1),对于目录来说为可进入到该目录中-:表示无对应位上的权限
第一组(rwx):表示文件所有者的权限,该文件的所有者为root,具备
可读
可写
可执行
的全部权限第二组(r-x):文件所属组的权限,具备可读
可执行
第三组(r-x):其他人的权限(跟本文件无关的人),具备可读
可执行
参考博文