小编给大家分享一下如何运行和管理RabbitMQ,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

RabbitMQ服务管理

启动RabbitMQ应用程序和Erlang节点

#/etc/init.d/rabbitmq-serverstart

停止RabbitMQ应用程序和Erlang节点

#/etc/init.d/rabbitmq-serverstop

或者

#rabbitmqctlstop

只启动/停止RabbitMQ应用

[root@localhost~]#rabbitmqctlstop_app[root@localhost~]#rabbitmqctlstart_app

启用管理插件

#rabbitmq-pluginsenablerabbitmq_management

RabbitMQ configuration file

RabbitMQ的配置文件有两个

一个是环境变量的配置文件 rabbitmq-env.conf ;

一个是配置信息的配置文件 rabbitmq.config;

注意,这两个文件默认是没有的,如果需要必须自己创建。RabbitMQ如果是用RPM包安装的,那么它的配置文件目录为/etc/rabbitmq,我们需要在此目录下手动创建rabbitmq.config文件和rabbitmq-env.conf文件,并更改这两个文件的属主属组为rabbitmq

[root@localhostrabbitmq]#lltotal12-rw-r--r--1rootroot23Nov1018:37enabled_plugins-rw-r--r--1rabbitmqrabbitmq36Nov1018:35rabbitmq.config-rw-r--r--1rabbitmqrabbitmq80Nov1018:35rabbitmq-env.conf

rabbitmq-env.conf

这个文件的位置是确定和不能改变的,位于:/etc/rabbitmq目录下(这个目录需要自己创建)。
文件的内容包括了RabbitMQ的一些环境变量,常用的有:

RABBITMQ_NODENAME=FZTEC-240088节点名称RABBITMQ_NODE_IP_ADDRESS=127.0.0.1监听IPRABBITMQ_NODE_PORT=5672监听端口RABBITMQ_LOG_BASE=/data/rabbitmq/log日志目录RABBITMQ_PLUGINS_DIR=/data/rabbitmq/plugins插件目录RABBITMQ_MNESIA_BASE=/data/rabbitmq/mnesia后端存储目录

rabbitmq.config

这是一个标准的erlang配置文件。它必须符合erlang配置文件的标准。
它既有默认的目录,也可以在rabbitmq-env.conf文件中配置,该文件结构为哈希数组格式

例如:

[{mnesia,[{dump_log_write_threshold,1000}]},{rabbit,[{vm_memory_high_watermark,0.4}]}{rabbitmq_management,[{listener,[{port,55673},{ip,"0.0.0.0"}]}]}].

mnesia指的是Mnesia数据库配置选项,Mnesia是RabbitMQ用来存储交换器和队列元数据的

rabbit指的是RabbitMQ特定的配置选项,每个选项的表达式都为{[option_name],[option_value]}。

Mnesia配置选项:

dump_log_write_threshold:默认值为100,将仅限追加的日志内容刷出/转储至真实的数据库文件的频度,它明确指定了在转储操作发生前,必须有多少个条目存储在日志中。设置更高的数值将减少I/O负载并增加持久化消息的性能。

Rabbit配置选项:

tcp_listeners:默认值[{"0.0.0.0",5672},],定义了RabbitMQ应该监听的非SSL加密通信的IP地址和端口{“ip地址”,“端口号”}数组

ssl_listeners:默认值为空,定义了RabbitMQ应该监听的SSL加密通信的IP地址和端口{“ip地址”,“端口号”}数组

ssl_options:默认值为空,指定SSL相关的选项,有cacertfile(CA证书文件),keyfile(密钥文件)和fail_if_no_peer_cert(客户端有效证书){“键”,“值”}数组

vm_memory_high_watermark:默认值0.4控制RabbitMQ允许消耗的的内存百分比,0.4=40%十进制数值

msg_store_file_size_limit:默认值16777216RabbitMQ垃圾收集存储内容之前,消息存储数据库的最大大小整型单位字节B

queue_index_max_journal_entries:默认值262144在转储到消息存储数据库并提交之前,消息存储数据库的最大大小整型

其他参数:

disk_free_limit 磁盘低水位线,若磁盘容量低于指定值则停止接收数据,默认值为{mem_relative, 1.0},即与内存相关联1:1,也可定制为多少byte.
hipe_compile 将部分rabbimq代码用High Performance Erlang compiler编译,可提升性能,该参数是实验性,若出现erlang vm segfaults,应关掉。
force_fine_statistics, 该参数属于rabbimq_management,若为true则进行精细化的统计,但会影响性能。

RabbitMQ两个配置文件的更多详细信息请参考官网

http://www.rabbitmq.com/configure.html#configuration-file

RabbitMQ用户管理

添加用户:

rabbitmqctladd_user[username][password]

例如:

rabbitmqctladd_userpmspms

将用户的tags设置为administrator,注意,这一步非常重要,否则无法使用创建的用户通过web浏览器登录并管理MQ服务

rabbitmqctlset_user_tagspmsadministrator

删除用户:

rabbitmqctldelete_user[username]

注意:当删除用户时,任何引用该用户的访问控制条目都会从Rabbit权限数据库中删除中自动删除。同事rabbit不会警告你与用户相关的访问控制条目也会一并被删除。

修改用户密码:

rabbitmqctlchange_passwordUsernameNewpassword

列出用户

rabbitmqctllist_users

更改密码

rabbitmqctlchange_password[username][newpasswd]

RabbitMQ权限管理

RabbitMQ权限分类:

读:有关消费消息的任何操作,包括清除整个队列(需要绑定操作成功)

写:发布消息(需要绑定操作成功)

配置:队列和交换器的创建和删除

权限设置:

rabbitmqctlset_permissions-p[vhost_name][user_name][config][write][read]

例1:

rabbitmqctlset_permissions-p/guest".*"".*"".*"

-p / :表示对/ 虚拟主机设置权限,如何省略vhost,默认为“/”虚拟主机

guest:对guest用户设置权限

后面的三个".*"分别对应配置、写、读的权限

“.*”为正则表达式,指代所有权限,".*"意味着匹配所有交换器和队列。这样就允许guest用户对/ 虚拟主机的所有队列和交换器执行配置、写、读命令。

例2:

#rabbitmqctlset_permissions-p/aaa"""check-.*"".*"Settingpermissionsforuser"aaa"invhost"/"...

对“/”虚拟主机赋予 aaa用户不能配置,限制只能对以“check-”开头的队列和交换器写操作,对所有队列和交换器可读的操作的权限。

查看权限

rabbitmqctllist_permissions-p[vhost_name]

rabbitmqctllist_permissions-p/Listingpermissionsinvhost"/"...guest.*.*.*spms.*.*.*aaacheck-.*.*

删除权限

rabbitmqctlclear_permissions-p[vhost_name][user_name]

例如:

rabbitmqctlclear_permissions-p/aaaClearingpermissionsforuser"aaa"invhost"/"...[root@localhost~]#rabbitmqctllist_permissions-p/Listingpermissionsinvhost"/"...guest.*.*.*spms.*.*.*

MQ 用户角色
按照个人理解,用户角色可分为五类,超级管理员, 监控者, 策略制定者, 普通管理者以及其他。
(1)超级管理员(administrator)
可登陆管理控制台(启用management plugin的情况下),可查看所有的信息,并且可以对用户,策略(policy)进行操作。
(2)监控者(monitoring)
可登陆管理控制台(启用management plugin的情况下),同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
(3)策略制定者(policymaker)
可登陆管理控制台(启用management plugin的情况下), 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。与administrator的对比,administrator能看到这些内容。
(4)普通管理者(management)
仅可登陆管理控制台(启用management plugin的情况下),无法看到节点信息,也无法对策略进行管理。
(5) 其他
无法登陆管理控制台,通常就是普通的生产者和消费者。

以上是“如何运行和管理RabbitMQ”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!