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 次下载

MIT 许可证

39KB
745

Rabbiteer for Rust

CLI 工具,用于发布和订阅 RabbitMQ。

安装

安装 Cargo (Rust)。

$ brew install rust

安装 rabbiteer。

$ cargo install rabbiteer

命令格式

命令有两个 "模式",publishsubscribe

$ 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