14 个版本 (稳定版)
使用旧的 Rust 2015
1.4.1 | 2018年9月9日 |
---|---|
1.4.0 | 2017年10月29日 |
1.3.1 | 2017年5月1日 |
1.3.0 | 2017年3月20日 |
0.2.0 | 2016年12月13日 |
#1384 在 命令行工具
每月 30 次下载
39KB
745 行
Rabbiteer for Rust
CLI 工具,用于发布和订阅 RabbitMQ。
安装
安装 Cargo (Rust)。
$ brew install rust
安装 rabbiteer。
$ cargo install rabbiteer
命令格式
命令有两个 "模式",publish
和 subscribe
。
$ rabbiteer [general opts] publish/subscribe [specific opts]
通用选项
$ rabbiteer --help
...
OPTIONS:
-h, --host <host> RabbitMQ host [default: 127.0.0.1]
-p, --password <password> Password to authenticate with [default: guest]
-P, --port <port> Port to connect to [default: 5672]
-U, --url <url> AMQP connection url (amqp://user:pass@host:port/vhost)
-u, --user <user> User to authenticate with [default: guest]
-v, --vhost <vhost> Virtual host [default: ]
环境变量
AMQP_URL
可以使用 AMQP_URL
环境变量设置连接字符串。
$ export AMQP_URL="amqp://joe:secret@myspecialhost/somevhost"
$ rabbiteer subscribe -e ttninjs-batch
CONF 文件
可以使用 CONF
环境变量指向的 JSON 文件指定连接。
$ cat conf-localhost.json
{
"amqp": {
"connection": {
"host": "localhost",
"vhost": "docker",
"login": "admin",
"password": "admin"
}
}
}
$ export CONF=conf-localhost.json
$ rabbiteer subscribe -e ttninjs-batch
发布
发布将来自 stdin 或文件的数 据推送到一个交换机。
$ rabbiteer publish --help
...
FLAGS:
--rpc Publish as RPC with replyTo and wait for reply.
OPTIONS:
-c, --content-type <content_type> Content type such as application/json. Inferred from filename if
possible.
-e, --exchange <exchange> Exchange to publish to [default ]
-f, --file <file> Filename (- is stdin) [default: -]
-H, --header <header>... Header on the form "My-Header: Value"
-r, --routing-key <routing_key> Routing key [default: ]
-z, --priority <priority> Priority
-t, --rpctimeout <rpctimeout> RPC timeout in milliseconds
示例
从 stdin
提供内容类型作为参数。
$ echo "{\"panda\":true}" | \
rabbiteer -u admin -p admin -v prod publish -e myexchange -c application/json
从文件
如果可能,将推断内容类型。
$ rabbiteer -u admin -p admin -v prod publish -e myexchange -H "batch: true" -f ./foo.json
支持 RabbitMQ 风格的 RPC
使用 replyTo
标头。
$ CONF=conf.json rabbiteer publish -e myservice -r somecall --rpc -f ./foo.json
使用文件 foo.json
的内容调用 myservice/somecall
并设置 replyTo
标头,等待 RPC 响应。响应将打印到 stdout。
订阅
订阅将一个匿名队列绑定到交换机并监听推送到该交换机的消息。消息可以输出到 stdout 或作为文件存放到目录中。
$ rabbiteer subscribe --help
...
FLAGS:
-i, --info Include delivery info (and headers).
OPTIONS:
-e, --exchange <exchange> Exchange to subscribe to
-o, --output <output> Output directory (- is stdout) [default: -]
-r, --routing-key <routing_key> Routing key [default: #]
示例
到 stdout
将每个消息的正文输出到 stdout。不对正文进行转换。如果正文是二进制,您将在终端中看到乱码。
$ rabbiteer -u admin -p admin -v prod subscribe -e myexchange
...
带有投递信息
-i
表示我们对消息进行 JSON 包装,以便包含一些关于投递的基本信息。
它总是产生一个 JSON 结构。当正文是二进制(由 content_type
指示)时,数据被 base64 编码,当类型是 text/...
时,我们将其输出为 JSON 字符串。
格式为
{
"deliver":{
"consumer_tag":"amq.ctag-Tjxx5Qy5zAr0o_yiLOsNEg",
"delivery_tag":1,
"redelivered":false,
"exchange":"myexchange",
"routing_key":"text"
},
"props":{
"content_type":"application/json",
"headers":{
"backendUpdate":false,
"batch":false,
"index":"dist-text",
"oper":"index"
}
},
"data": "body"
}
$ rabbiteer -u admin -p admin -v prod subscribe -e myexchange -i
...
到一个目录
使用-o
,每个单独的消息体将被输出到单独的文件中。头部fileName
可以由发送者提供,在这种情况下,该文件将被(覆盖)写入。
$ rabbiteer -u admin -p admin -v prod subscribe -e myexchange -o /tmp
...
许可证
MIT许可证(MIT)
版权所有(c)2014-2016 rabbiteer 开发者
特此授予任何获得此软件及其相关文档副本(“软件”)的人免费使用软件的权利,不受限制地处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许软件的接受者进行此类操作,但需遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
软件按“原样”提供,不提供任何形式的质量保证,无论是明示的、暗示的,还是与特定目的适用性或非侵权相关的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因,由此软件或其使用或操作而产生的,无论是在软件或其使用或操作过程中出现的。
依赖项
~11MB
~224K SLoC