向rabbitmqexchanges和queues发送和接收消息的简单工具

rabbitholer的Python项目详细描述


兔眼虫

img

img

摘要

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所有命令都有一些共同的参数它们指导应用程序如何连接到服务器。它们包括:

ArgumentDescription
^{}, ^{}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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
具有多用户OU和多访问CNs的java Spring LDAP身份验证   java分配的变量神秘地变为null   java比较两个表或文本文件,并用行号和列输出差异   java如何在同一构建目录中设置netbeans中的文件路径?   java如何在avro模式中定义byte[]和LocalDateTime?   java在多个活动和片段中使用相同的微调器。实施它的最佳方式是什么?   java使用OOPS扩展已编写的类   java如何在特定于文件的基础上禁用Eclipse中的编译器警告?   java将字符串转换为日期的格式不正确   Java文件从一台服务器复制到另一台服务器   java Jacksonal和JacksonApperasl的最新jar版本是什么?   java如何在使用selenium chrome web驱动程序时禁用chrome中的身份验证提示   java是什么。推荐人和推荐人。Eclipse工作区中的元数据以及它们是否应该在设备之间同步?   java我应该把sqlite db文件放在哪里,这样我的jar就可以访问它了?这对连接字符串有何影响?   java如何在选择单元格时设置JTable标题背景色   java Cassandra 2 Hector:复合行键上的范围切片查询返回空行   java方法注释继承   Python字节对象与java   java Android和从sqlite数据库加载listview