RabbitMQ:命令行
2020-03-05 15:54 huoit 阅读(827) 评论(0) 收藏 举报转:
rabbitmqctl stop [{pid_file}] # 表示stop 在RabbitMQ服务器上运行的一个Erlang 节点,可以指定某一个 *pid_file*,表示会等待这个指定的程序结束 rabbitmqctl shutdown # 表示终止RabbitMQ 服务器上的Erlang进程,如果终止失败,会返回非零数字 rabbitmqctl stop_app # 表示终止RabbitMQ的应用,但是Erlang节点还在运行。该命令典型的运行在一些需要RabbitMQ应用被停止的管理行为之前,例如 reset rabbitmqctl start_app # 表示启动RabbitMQ的应用。该命令典型的运行在一些需要RabbitMQ应用被停止的管理行为之后,例如 reset rabbitmqctl wait {pid_file} # 表示等待RabbitMQ应用启动。该命令会等待指定的pid file被创建,也就是启动的进程对应的pid保存在这个文件中,然后RabbitMQ应用在这个进程中启动。如果该进程终止,没有启动RabbitMQ应用,就会返回错误。 # 合适的pid file是有rabbitmq-server 脚本创建的,默认保存在 Mnesia 目录下,可以通过修改 RABBITMQ_PID_FILE 环境变量来修改 # 例如 rabbitmqctl wait /var/run/rabbitmq/pid rabbitmqctl reset # 表示设置RabbitMQ节点为原始状态。会从该节点所属的cluster中都删除,从管理数据库中删除所有数据,例如配置的用户和vhost,还会删除所有的持久消息。 # 要想reset和force_reset操作执行成功,RabbitMQ应用需要处于停止状态,即执行过 stop_app rabbitmqctl force_reset # 表示强制性地设置RabbitMQ节点为原始状态。它和reset的区别在于,可以忽略目前管理数据库的状态和cluster的配置,无条件的reset。 # 该方法的使用,应当用在当数据库或者cluster配置损坏的情况下作为最后的方法。 rabbitmqctl rotate_logs {suffix} # 表示将日志文件的内容追加到新的日志文件中去,这个新的日志文件的文件名是原有的日志文件名加上命令中的 suffix,并且恢复日志到原来位置的新文件中。 # 注意:如果新文件原先不存在,那么会新建一个;如果suffix为空,那么不会发生日志转移,只是重新打开了一次日志文件而已。 rabbitmqctl hipe_compile {directory} # 表示在指定的目录下执行HiPE编译和缓存结果文件 .beam-files # 如果需要父目录会被创建。并且在编译之前,该目录下的所有 .beam-files会被自动删除。 # 使用预编译的文件,你应该设置 RABBITMQ_SERVER_CODE_PATH 环境变量为 hipe_compile 调用指定的目录。 #*********************************** rabbitmqctl join_cluster {clusternode} [--ram] # 表示结合到指定的集群,如果有参数 --ram 表示作为RAM节点结合到该集群中。 # 该命令指令本节结合到指定的集群中,在结合之前,该节点需要reset,所以在使用时,需要格外注意。为了成功运行本命令,必须要停止RabbitMQ应用,例如 stop_app # 集群节点有两种类型: disc 和 RAM。disc类型,复制数据在RAM和disc上,在节点失效的情况下,提供了冗余保证,也能从一些全局事件中恢复,例如所有节点失效。RAM类型,只复制数据在RAM上,主要表现在伸缩性上,特别是在管理资源(例如:增加删除队列,交换器,或者绑定)上表现突出。 # 一个集群必须至少含有一个disc节点,当通常都多余一个。通过该命令时,默认是设置为disc节点,如果需创建RAM节点,需要指定参数 --ram # 执行此命令之后,在该节点上启动的RabbitMQ应用,在该节点挂掉之后,会尝试连接节点所在集群中的其他节点。 # 为了离开集群,可以 reset 该节点,也可以使用命令 forget_cluster_node 远程删除节点 rabbitmqctl cluster_status # 表示显示通过节点类型聚合在一起的集群中的所有节点,还有目前正在运行的节点 rabbitmqctl change_cluster_node_type {disc|ram} # 表示改变集群节点的类型。该操作的正确执行,必定会停止该节点。并且在调整一个node为ram类型时,该节点不能为该集群的唯一node rabbitmqctl forget_cluster_node [--offline] # 表示远程移除一个集群节点。要删除的节点必须脱机,如果没有脱机,需要使用 --offline 参数。当使用 --offline 参数时,rabbitmqctl不会去连接节点,而是暂时变成节点,以便进行变更。这在节点不能正常启动时非常有用。在这种情况下,节点会成为集群元数据的规范来源(例如哪些队列存在)。因此如果可以的话,应该使用此命令在最新的节点上关闭。 # --offline 参数使节点从脱机节点上移除。使用场景主要是在所有节点脱机,且最后一个节点无法联机时,从而防止整个集群启动。在其他情况不应该使用,否则会导致不一致。 # 例如 rabbitmqctl -n hare@mcnulty forget_cluster_node rabbit@stringer # 上述命令将从节点 hare@mcnulty 中移除节点 rabbit@stringer rabbitmqctl rename_cluster_node {oldnode1} {newnode1} [oldnode2] [newnode2...] # 表示在本地数据库上修改集群节点名称。该命令让rabbitmqctl暂时成为一个节点来做出做变更。因此,本地的待修改的集群节点一定要完全停止,其他节点可以是online或者offline rabbitmqctl update_cluster_nodes {clusternode} # 表示指示已经集群的节点在唤醒时联系 {clusternode} 进行集群。这与 join_cluster 命令不同,因为它不加入任何集群,它是检查节点是否已经在具有 {clusternode} 的集群中。 # 该命令的需求,是在当一个节点offline时,修改了集群节点的情形下。例如:节点A和B聚群,节点A offline了,节点C和B集群,并且B节点离开了该集群,那么当节点A起来的时候,A会尝试连接B,但是由于B节点已经不在该集群中,所以会失败。 # 通过 update_cluster_nodes -n A C 将会解决上述问题。 rabbitmqctl force_boot # 表示强制确保节点启动,即使该节点并不是最后down的。 # 一般情况下,当你同时shut down了RabbitMQ集群时,第一个重启的节点应该是最后一个down掉的,因为它可能已经看到了其他节点发生的事情。但是有时候这并不可能:例如当整个集群lose power,那么该集群的所有节点会认为他们不是最后一个关闭的。 # 如果最后down的节点永久的lost,那么应该优先使用 rabbitmqctl forget_cluster_node --offline ,因为这将确保在丢失节点上的镜像队列得到优先处理。 rabbitmqctl sync_queue [-p vhost] {queue} # {queue} 表示待同步的队列名称 # 指引含有异步slaves的镜像队列去同步自身。当队列执行同步化时,其将会被锁定(指所有publishers发送出去的和consumers获取到的队列都会被锁定)。为了成功执行此命令,队列必须要被镜像。 # 注意,排除消息的异步队列将最终被同步化,此命令主要运用于未被排除完全消息的队列。 rabbitmqctl cancel_sync_queue [-p vhost] {queue} # 指引一个正在同步的镜像队列停止此操作。 rabbitmqctl purge_queue [-p vhost] {queue} # {queue} 表示待清空消息的队列名称 # 该命令表示清空队列(即删除队列中的所有消息) rabbitmqctl set_cluster_name {name} # 设置集群的名称。在连接中,集群的名称被声明在客户端上,被同盟和插件用来记录一个消息所在的位置。集群的名称默认来自于集群中第一个节点的主机名,但是可以被修改。 #***********************************
资源
1、如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!
2、欢迎各位转载,但是未经作者本人同意,转载文章请在文章页面明显位置标明作者和原文连接,否则保留追究法律责任的权利。
作者博客: http://www.cnblogs.com/xmai/
浙公网安备 33010602011771号