`

rabbitmq操作命令

阅读更多

 

      1.必需掌握的指令

添加用户:

rabbitmqctl add_user rainbird password

添加权限:

rabbitmqctl set_permissions -p "/" rainbird ".*" ".*" ".*"

删除测试用户:

rabbitmqctl delete_user guest

 

所有指令列表(很简单的英文):

add_user        <UserName> <Password>

delete_user     <UserName>

change_password <UserName> <NewPassword>

list_users

add_vhost    <VHostPath>

delete_vhost <VHostPath>

list_vhosts

set_permissions   [-p <VHostPath>] <UserName> <Regexp> <Regexp> <Regexp>

clear_permissions [-p <VHostPath>] <UserName>

list_permissions  [-p <VHostPath>]

list_user_permissions <UserName>

list_queues    [-p <VHostPath>] [<QueueInfoItem> ...]

list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...]

list_bindings  [-p <VHostPath>] 

list_connections [<ConnectionInfoItem> ...]

       2.vhost  / 不能删除

 

      删除/以后,新建立的vhost不能正常使用(即便不删除/,新建立的vhost也是不能正常使用).不知道为什么,有待研究.

 

      3.关于持久化

 

      示例里没有一点儿和持久化相关的东东,而这却是笔者最关心的,想想作为消息服务器如果不能保证消息一定被接收到,算什么事儿啊?比着网上狂转的python版本从php-amqp的库里一点一点儿翻,找到了如下持久化的设置:

 

      接收端声明队列和交换机自动建立:

$ch->queue_declare($_QUEUE,false,true,false,false);

第三个参数设置true保证服务器重启后,自动建立队列

第五个参数设置成false防止接收端没连接的时候丢失消息

 $ch->exchange_declare($EXCHANGE, 'direct', false, true, false);

第四个参数设置true保证重启后,自动建立交换机

第五个参数设置false防止接收端断开后,交换机被删除

 

 

      发布端声明消息持久:

$message = new AMQPMessage(serialize($object), array('content_type' => 'text/plain', 'delivery_mode' => 2));

 

      同时满足了上面三个条件,就可以保证未接收的消息在服务器意外重启以后依然存在了.

 

      4.持久化的后遗症

 

      比如说你初始化了一个队列msgs.你会发现它真的持久了!每次服务器端重启后,通过list_queues命令查看的时候都存在.但是时间久了,这个msgs我们并不需要了,怎么办呢?笔者发现,想清除这个队列只能删除它所在的vhost,然后再重建vhost,再设置vhost的权限.

rabbitmqctl delete_vhost /

rabbitmqctl add_vhost /

rabbitmqctl set_permissions -p / rainbird '.*' '.*' '.*'

 

      要注意,如果这个操作过程中有接收端处于连接状态它们不会自动断开,但也不会再收到消息,需要手动重新连接一下.

 

      5.关于修改监听ip和监听端口

 

      出于一些需要,比如我们有多个ip,我们希望rabbitmq仅运行在指定的ip.或者考虑到安全问题,我们希望修改一下rabbitmq的监听端口.默认安装完成以后,/etc下面会有一个rabbitmq的空目录,这时候我们需要手工创建rabbitmq.conf,并写入相关内容.

 

vi /etc/rabbitmq/rabbitmq.conf

RABBITMQ_NODE_IP_ADDRESS=0.0.0.0

RABBITMQ_NODE_PORT=2222

 

      保存以后重启服务就生效了.

 

      这个东东网上又没介绍,翻了半天+无限尝试才搞出来.

 

      6.关于运行接收端cpu100%问题

 

      第一眼看到接收端会运行一个while等待消息的时候,笔者就知道这个进程肯定cpu占用会100%.在代码里几处while尝试添加usleep无效后,笔者最后还是在官方的问题列表里找到了答案:

vi +286 amqp_wire.inc

293 while ($read < $n && (false !== ($buf = fread($this->sock, $n - $read))))

294             {

295                 usleep(50000);

296                 $read += strlen($buf);

297                 $res .= $buf;

298             }   

 

      笔者的出发点是对的,只是没找对while.可能有人会奇怪为什么要用usleep(50000)?实际上笔者有遇到运行php起来的daemon导致cpu100%的情况.当时笔者加的是usleep(500000)也就是半秒钟.这样就可以使进程看上去cpu占用为0.没想到再降一个数量级也是可以正常的,这次算赚到了.

 

      7.学到了error_log函数

 

      以前有见过这个函数,以为是向系统日志里写log的时候才用得到呢,没想到还可以像下面这样用:

function debug_msg($s)

{

    //error_log($s);

}

 

      在不同的地方写上debug_msg,最后不用的时候时候,直接注释掉error_log,不错的小技巧!

 

      暂时就摸索出来这么多东西了,准备拿几个不重要的任务跑跑稳定性试试.

分享到:
评论
3 楼 a52071453 2015-10-12  
w6889037 写道
你是之前君融贷的吗

对啊 你也是呗 哈哈哈
2 楼 w6889037 2015-09-16  
你是之前君融贷的吗
1 楼 cherio2002 2014-09-28  
configuration file must contain ONE list ended by <dot>

相关推荐

    RabbitMQ 常用命令.docx

    ### RabbitMQ常用命令详解 #### 一、服务启动与关闭 **启动命令:** - `rabbitmq-server-detached`:启动RabbitMQ服务,并将其置于后台运行。 **关闭命令:** - `rabbitmqctl stop`:停止正在运行的RabbitMQ服务...

    rabbitmq 操作手册

    ### RabbitMQ操作手册知识点解析 #### 一、RabbitMQ简介及重要性 RabbitMQ是一种消息中间件,主要用于在分布式系统中实现消息传递。它支持多种消息协议,并且能够处理大量的并发用户同时发送和接收消息。由于其...

    RabbitMQ操作demo

    本教程将通过一个PHP操作RabbitMQ的实例——"RabbitMQ操作demo",来讲解如何在PHP环境中使用RabbitMQ。 首先,安装RabbitMQ是基础步骤。你需要在服务器上下载并安装RabbitMQ,这通常涉及访问其官方网站下载适合你...

    C#操作RabbitMQ的完整实例

    执行相关命令 1.添加用户密码 rabbitmqctl add_user wenli wenli 2.设置wenli为管理员rabbitmqctl set_user_tags wenli administrator 3.启动RabbitMQ的web管理rabbitmq-plugins enable rabbitm

    麒麟v10系统Rabbitmq3.6.10安装包

    麒麟操作系统,作为中国自主研发的Linux发行版,以其稳定性和安全性在服务器领域得到了广泛应用。而RabbitMQ是一款开源的消息队列系统,基于AMQP(Advanced Message Queuing Protocol)协议,广泛用于分布式系统的...

    linux中rabbitmq安装包

    安装RabbitMQ的命令如下: ```bash sudo yum install -y rabbitmq-server-3.11.1-1.el8.noarch.rpm ``` 安装完成后,RabbitMQ服务通常会自动启动。你可以通过以下命令检查其状态: ```bash sudo systemctl status...

    rabbitmq-c-master.rar_RabbitMQ c lib_cmake编译_rabbitmq_rabbitmq-c

    - 队列和交换机操作:声明、删除队列和交换机,设置绑定,以实现消息路由。 - 消息发布和消费:发布消息到队列,订阅队列以接收消息。 - AMQP命令:支持完整的AMQP命令集,包括事务、确认模式等。 在使用`rabbitmq-...

    rabbitmq 3.10.2 window安装包

    4. 安装完成后,可以在命令行中通过`rabbitmq-plugins enable rabbitmq_management`命令启用管理插件,这样可以通过Web界面管理RabbitMQ。 5. 使用浏览器访问`http://localhost:15672`,使用默认凭据(guest/guest)...

    tp6使用rabbitmq

    消息通常是JSON格式,可以通过解码后进行操作。 8. **异常处理与确认**:为了保证消息的可靠性,可以启用消费者确认机制。当消息被正确处理后,消费者需要发送一个确认信号给RabbitMQ,否则消息将被重新投递。同时...

    RabbitMQ使用指南.pdf

    RabbitMQ适用于多种操作系统,文档中提及了基于华为云使用CentOS 7.6(64位)系统部署RabbitMQ 3.8.2版本的实例。该服务软件的安装和配置被记录在官方手册中,为用户提供了一个较为完整的指南。 安装RabbitMQ通常...

    rabbitMQ_Windows版.zip

    4. **配置环境变量**:确保PATH环境变量包含RabbitMQ的sbin目录,这样就可以在命令行中直接运行RabbitMQ命令。 5. **设置默认用户和虚拟主机**:RabbitMQ默认不提供用户认证,为了安全起见,需要通过命令行工具...

    prometheus rabbitmq_exporter

    在命令行中,执行类似 `./rabbitmq_exporter --config.file=rabbitmq.yml` 的命令启动服务。 4. **验证**:在浏览器中访问 `rabbitmq_exporter` 的默认端口(通常是9090)上的 `/metrics` 端点,确认可以看到 ...

    RabbitMQ-c源码

    - **rabbitmq_channel_open**: 打开一个新的通道,通道是RabbitMQ中进行操作的基本单位。 - **rabbitmq_exchange_declare**: 声明一个交换机,定义其类型(如direct、fanout、topic等)。 - **rabbitmq_queue_...

    rabbitmq-server-windows-3.9.13

    4. **自动化部署**:结合Windows的任务计划程序,可以自动化执行RabbitMQ的备份、升级等操作。 以上就是关于RabbitMQ在Windows环境下安装和使用的基本知识,以及它的核心概念和分布式特性。理解并掌握这些内容,将...

    centos7.9系统rabbitmq3.8.5升级为3.8.35版本

    在IT行业中,RabbitMQ是一种广泛使用的开源消息代理和队列服务器,尤其在分布式系统中,它扮演着关键角色,负责处理异步任务...总之,升级RabbitMQ是一项重要的系统维护任务,需要谨慎操作,确保系统的连续性和稳定性。

    RabbitMQ3.9.15安装包及安装文档

    了解如何在应用程序中使用这些库来发送和接收消息是使用RabbitMQ的实际操作部分。 10. **故障恢复与高可用性**:RabbitMQ支持集群模式,通过将多个节点组成集群,可以提高系统的可用性和容错性。理解如何配置和管理...

    rabbitMQ安装包.zip

    在Linux上,使用`systemctl start rabbitmq-server`或者`service rabbitmq-server start`命令。 RabbitMQ的核心概念包括: 1. **节点(Node)**:RabbitMQ服务器本身就是一个节点,它可以是集群的一部分,也可以...

    windows安装rabbitMQ.zip

    在Windows操作系统上安装RabbitMQ,你需要按照以下步骤进行: 1. **下载RabbitMQ组件**: 首先,你需要获取两个必要的文件,它们在你提供的压缩包文件中已经包含:`otp_win64_20.2.exe` 和 `rabbitmq-server-3.7.4...

    RabbitMQ笔记.pdf

    5. 通过命令行工具启动和停止RabbitMQ,例如使用`rabbitmq-server start`命令启动服务,使用`rabbitmqctl`工具进行插件管理和服务器启停。 RabbitMQ的高性能主要依赖于Erlang语言的特性,如高效的进程间通信和容错...

Global site tag (gtag.js) - Google Analytics