RabbitMQ 安装与操作



RabbitMQ 安装与操作

RabbitMQ 安装

官网 http://www.rabbitmq.com/

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的出现,跨语言的灵活性对于开源消息代理来说变得真实。

AMQP 0-9-1模型解释

RabbitMQ术语

RabbitMQ和一般的消息传递使用了一些术语。

  • Broker:它提供一种传输服务,它的角色就是维护一条从生产者到消费者的路线,保证数据能按照指定的方式进行传输,

  • Exchange:消息交换机,它指定消息按什么规则,路由到哪个队列。

  • Queue:消息的载体,每个消息都会被投到一个或多个队列。

  • Binding:绑定,它的作用就是把exchange和queue按照路由规则绑定起来.

  • Routing Key:路由关键字,exchange根据这个关键字进行消息投递。

    • vhost:虚拟主机,一个broker里可以有多个vhost,用作不同用户的权限分离。

  • Producer:消息生产者,就是投递消息的程序.

  • Consumer:消息消费者,就是接受消息的程序.

  • Channel:消息通道,在客户端的每个连接里,可建立多个channel.

RabbitMQ 安装

  1. 在安装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时,强烈建议您这么做。

安装命令

  1. Installing on RPM-based Linux (RHEL, CentOS, Fedora, openSUSE) 基于RPM的安装

    1. wget http://www.rabbitmq.com/releases/erlang/erlang-19.0.4-1.el7.centos.x86_64.rpm

    2. 安装erlang

      yum install -y erlang-19.0.4-1.el7.centos.x86_64.rpm

    3. 下载rabbitmq

      wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.6.6/rabbitmq-server-3.6.6-1.el7.noarch.rpm

    4. 公共签名密钥

      rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc

    5. 安装rabbitmq

      yum install -y rabbitmq-server-3.6.6-1.el7.noarch.rpm

或者选择下载安装包手动安装;

以下是下载软件包的GitHub地址:

  • https://github.com/rabbitmq/rabbitmq-server/releases

  • https://github.com/rabbitmq/erlang-rpm/releases

下载时请注意版本兼容性带来的不必要的问题!以及版本与您的体统是否匹配!

操作命令

  • 启动守护进程

    安装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节点返回到其初始状态。为了resetforce_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只能在本机登录,在其他机器登录需要新增用户!

      "guest" user can only connect via localhost

更多命令参见官方使用手册,或者是命令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).

安装/集群过程中可能遇到的问题

  1. 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

  2. 在 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"。


参考

  • RabbitMQ快速参考

  • RabbitMQ Cluster 指南

  • RPM 命令参考

    http://rpm.org/

    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

  • AMPQ

    AMQP is an open Internet (or “wire”) Protocol standard for message-queuing communications.

  • WGET 命令参考

    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.

    http://www.gnu.org/software/wget/

  • YUM 命令参考

    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.

    http://yum.baseurl.org/

    查看已经安装的包 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):其他人的权限(跟本文件无关的人),具备可读 可执行

  • 参考博文https://blog.csdn.net/u013256816/article/details/59117354

你可能感兴趣的:(RabbitMQ)