URI 查询参数
概述
本页是对 URI 规范 和 TLS 指南的非正式补充,记录了官方支持的客户端如何解释 URI 参数。目前只有 Erlang 客户端这样做。
Federation 和 Shovel 插件使用 URI 指定与其他 Broker 的连接,并且使用 Erlang 客户端实现,因此它们采用了此处描述的所有参数。
基础知识
查询参数以通常的方式添加到 URI 中。任何参数都可以省略。客户端将在省略时选择合理的默认值。
示例 A
一个禁用 TLS 的连接 URI 示例
amqp://myhost?heartbeat=5&connection_timeout=10000
这指定了一个到主机 myhost
的(非加密)网络连接。心跳间隔设置为 5 秒,连接超时设置为 10 秒(10,000 毫秒)。其他参数设置为其默认值。
示例 B
在以下示例 URI 中,连接客户端侧启用了 TLS 和 TLS 对等方验证
amqps://myhost?cacertfile=/path/to/ca_certificate.pem
&certfile=/path/to/client_certificate.pem
&keyfile=/path/to/client_key.pem
&verify=verify_peer
&server_name_indication=myhost
示例 C
在以下示例 URI 中,启用了 TLS,但连接客户端侧禁用了 TLS 对等方验证
amqps://myhost?cacertfile=/path/to/ca_certificate.pem
&certfile=/path/to/client_certificate.pem
&keyfile=/path/to/client_key.pem
&verify=verify_none
&server_name_indication=myhost
TLS 参数
这指定了一个到主机 myhost
的加密网络连接。提供了证书文件的绝对路径。verify_peer
确保验证证书信任链,server_name_indication
根据主机名 myhost
验证服务器证书中的 CN 值。
参数名 | 描述 |
---|---|
cacertfile certfile keyfile | 用于向服务器提供客户端 TLS 证书的文件路径。仅对 |
verify server_name_indication | 仅对 |
auth_mechanism | 与服务器协商机制时要考虑的 SASL 身份验证机制。此参数可以多次指定,例如 |
heartbeat | 与服务器协商的心跳超时值,以秒为单位(整数)。 |
connection_timeout | 建立到服务器的 TCP 连接时等待的时间,以毫秒为单位(整数),超过此时间将放弃。 |
channel_max | 此连接上允许的最大通道数。 |
TLS 选项 也可以使用 advanced.config
中的 amqp_client.ssl_options
配置键全局指定,如下所示
{amqp_client, [
{ssl_options, [
{cacertfile, "path-to-ca-certificate"},
{certfile, "path-to-certificate"},
{keyfile, "path-to-keyfile"},
{verify, verify_peer}
]}
]}.
它们将与 URI 中的 TLS 参数合并(后者优先),并影响节点上所有传出的 RabbitMQ Erlang 客户端连接,包括内部使用客户端的插件(Federation、Shovel 等)。有关详细信息,请参阅 TLS 指南。