向rabbitmqexchanges和queues发送和接收消息的简单工具
rabbitholer的Python项目详细描述
兔眼虫
摘要
Rabbitholer是一个非常简单的工具,用于通过AMQP协议与RebbiMQ服务器通信它使用python的pika库,并提供方便的命令行接口,用于向RabbitMQ服务器实例发送和接收消息rabbitholer本质上是一个轻量级amqp客户端。
我写这篇文章是因为在处理不同的项目时,我经常不得不调试rabbitmq消息。rabbitmq的web management plugin可能很方便,但它并没有与我习惯使用的其他命令行实用程序(GNU core utilities)真正集成。我按照minimalism idea的思路设计了Rabbitholer,因为我希望它尽可能多功能与其他实用程序的轻松集成是这里的核心设计原则。
安装
用法
基本的rabitholer --help
运行给出:
usage: rabitholer [-h] [--version] [--verbose] Command ...
Interact with RabbitMQ exhanges and queues
optional arguments:
-h, --help show this help message and exit
--version, -v Print veriosn inormation
--verbose, -vv Print a lot of information about the execution.
Commands:
A list of the avialble commands
Command
send Send a message to an exchange
read Send a messages to an exchange read from the standard input.
pipe Create a named pipe connected to an exchange
monitor Monitor the messges on an exchange
目前有四个支持的命令:send、read、pipe和monitor所有命令都有一些共同的参数它们指导应用程序如何连接到服务器。它们包括:
Argument | Description |
---|---|
^{ | The IP of the RabbitMQ. Standard port is assumed (5672). |
^{ | The name of the exchange to be declared while connecting. |
^{ | The name of the queue to be bound to the exchange while connecting. |
^{ | The routing key to be used for outgoing messages. |
不同的参数可能影响不同的命令。例如,当接收消息时,路由密钥不起作用交换将声明为非被动、非持久和非自动删除,类型为fanout这意味着应用程序可以连接到现有的Exchange。但是要注意的是,如果交换已经存在,它必须是类型{{STR 1 } $扇出< /强>。队列将声明为非自动删除。exchange和queue的默认名称都是“general”。除非命令行参数另有说明,否则将使用这些名称。如果未指定,路由密钥将保留为空字符串。您可以阅读更多关于rabbitmq交换和队列here (complete reference guide)和here (quick explantion of the AMQP model)的信息。
send:只需使用指定的路由密钥向指定的Exchange发送消息。
用于如下用途:
rabbitholer send <msg>
可以发送多条消息,如:
rabbitholer send "<msg1>""<msg2>" ...
read:读取标准输出并使用指定的路由密钥将其转储到指定的Exchange上。每一行都被视为一条单独的消息。
预期用途如下:
echo'<msg>'| rabbitholer read
monitor:从队列中读取消息并将其转储到标准输出上—每个消息都位于单独的行上。
示例使用:
rabbitholer read| grep "id:"
pipe:创建连接到应用程序正在运行的实例的named pipe。管道的任何输入都将作为消息发送到服务器预期用途是:
rabbitholer pipe ./rabbithole
然后你可以做如下事情:
echo'<msg>' > ./rabbithole