运行和管理RabbitMQ
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了运行和管理RabbitMQ相关的知识,希望对你有一定的参考价值。
RabbitMQ服务管理
启动RabbitMQ应用程序和Erlang节点
# /etc/init.d/rabbitmq-server start
停止RabbitMQ应用程序和Erlang节点
# /etc/init.d/rabbitmq-server stop
或者
# rabbitmqctl stop
只启动/停止RabbitMQ应用
[[email protected] ~]# rabbitmqctl stop_app [[email protected] ~]# rabbitmqctl start_app
RabbitMQ configuration file
RabbitMQ的配置文件有两个
一个是环境变量的配置文件 rabbitmq-env.conf ;
一个是配置信息的配置文件 rabbitmq.config;
注意,这两个文件默认是没有的,如果需要必须自己创建。RabbitMQ如果是用RPM包安装的,那么它的配置文件目录为/etc/rabbitmq,我们需要在此目录下手动创建rabbitmq.config文件和rabbitmq-env.conf文件,并更改这两个文件的属主属组为rabbitmq
[[email protected] rabbitmq]# ll total 12 -rw-r--r-- 1 root root 23 Nov 10 18:37 enabled_plugins -rw-r--r-- 1 rabbitmq rabbitmq 36 Nov 10 18:35 rabbitmq.config -rw-r--r-- 1 rabbitmq rabbitmq 80 Nov 10 18:35 rabbitmq-env.conf
rabbitmq-env.conf
这个文件的位置是确定和不能改变的,位于:/etc/rabbitmq目录下(这个目录需要自己创建)。
文件的内容包括了RabbitMQ的一些环境变量,常用的有:
RABBITMQ_NODENAME=FZTEC-240088 节点名称 RABBITMQ_NODE_IP_ADDRESS=127.0.0.1 监听IP RABBITMQ_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: 默认值16777216 RabbitMQ垃圾收集存储内容之前,消息存储数据库的最大大小 整型 单位字节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用户管理
添加用户:
rabbitmqctl add_user [username] [password]
删除用户:
rabbitmqctl delete_user [username]
注意:当删除用户时,任何引用该用户的访问控制条目都会从Rabbit权限数据库中删除中自动删除。同事rabbit不会警告你与用户相关的访问控制条目也会一并被删除。
列出用户
rabbitmqctl list_users
更改密码
rabbitmqctl change_password [username] [newpasswd]
RabbitMQ权限管理
RabbitMQ权限分类:
读:有关消费消息的任何操作,包括清除整个队列(需要绑定操作成功)
写:发布消息(需要绑定操作成功)
配置:队列和交换器的创建和删除
权限设置:
rabbitmqctl set_permissions -p [vhost_name] [user_name] [config] [write] [read]
例1:
rabbitmqctl set_permissions -p / guest ".*" ".*" ".*"
-p / :表示对/ 虚拟主机设置权限,如何省略vhost,默认为“/”虚拟主机
guest:对guest用户设置权限
后面的三个".*"分别对应配置、写、读的权限
“.*”为正则表达式,指代所有权限,".*"意味着匹配所有交换器和队列。这样就允许guest用户对/ 虚拟主机的所有队列和交换器执行配置、写、读命令。
例2:
# rabbitmqctl set_permissions -p / aaa "" "check-.*" ".*" Setting permissions for user "aaa" in vhost "/" ...
对“/”虚拟主机赋予 aaa用户不能配置,限制只能对以“check-”开头的队列和交换器写操作,对所有队列和交换器可读的操作的权限。
查看权限
rabbitmqctl list_permissions -p [vhost_name]
rabbitmqctl list_permissions -p / Listing permissions in vhost "/" ... guest .* .* .* spms .* .* .* aaa check-.* .*
删除权限
rabbitmqctl clear_permissions -p [vhost_name] [user_name]
例如:
rabbitmqctl clear_permissions -p / aaa Clearing permissions for user "aaa" in vhost "/" ... [[email protected] ~]# rabbitmqctl list_permissions -p / Listing permissions in vhost "/" ... guest .* .* .* spms .* .* .*
本文出自 “zengestudy” 博客,请务必保留此出处http://zengestudy.blog.51cto.com/1702365/1875932
以上是关于运行和管理RabbitMQ的主要内容,如果未能解决你的问题,请参考以下文章