RabbitMQ 绑定规范
RabbitMQ 绑定组件的详细文档
组件格式
要设置 RabbitMQ 绑定,需创建一个类型为 bindings.rabbitmq 的组件。请参考本指南了解如何创建和应用绑定配置。
apiVersion: dapr.io/v1alpha1 kind: Component metadata: name: <NAME> spec: type: bindings.rabbitmq version: v1 metadata: - name: queueName value: "queue1" - name: host value: "amqp://[username][:password]@host.domain[:port]" - name: durable value: "true" - name: deleteWhenUnused value: "false" - name: ttlInSeconds value: "60" - name: prefetchCount value: "0" - name: exclusive value: "false" - name: maxPriority value: "5" - name: contentType value: "text/plain" - name: reconnectWaitInSeconds value: "5" - name: externalSasl value: "false" - name: caCert value: "null" - name: clientCert value: "null" - name: clientKey value: "null" - name: direction value: "input, output" 警告
上述示例中,secret 使用了明文字符串。建议使用 secret 存储,如此处所述。规范元数据字段
发布新的 RabbitMQ 消息时,所有关联元数据的值都会添加到消息的头部。
| 字段 | 必需 | 绑定支持 | 详情 | 示例 |
|---|---|---|---|---|
queueName | Y | 输入/输出 | RabbitMQ 队列名称 | "myqueue" |
host | Y | 输入/输出 | RabbitMQ 主机地址 | "amqp://[username][:password]@host.domain[:port]" 或使用 TLS: "amqps://[username][:password]@host.domain[:port]" |
durable | N | 输出 | 指定 RabbitMQ 是否持久化存储消息。默认为 "false" | "true", "false" |
deleteWhenUnused | N | 输入/输出 | 启用或禁用自动删除。默认为 "false" | "true", "false" |
ttlInSeconds | N | 输出 | 设置 RabbitMQ 队列级别的默认消息生存时间。如果省略此参数,消息将不会过期,继续存在于队列中直到被处理。另见 此处 | 60 |
prefetchCount | N | 输入 | 设置 通道预取设置 (QoS)。如果省略此参数,QoS 将设置为 0 表示无限制 | 0 |
exclusive | N | 输入/输出 | 确定主题是否为独占主题。默认为 "false" | "true", "false" |
maxPriority | N | 输入/输出 | 设置 优先级队列 的参数。如果省略此参数,队列将被创建为普通队列而不是优先级队列。值在 1 到 255 之间。另见 此处 | "1", "10" |
contentType | N | 输入/输出 | 消息的内容类型。默认为 “text/plain”。 | "text/plain", "application/cloudevent+json" 等 |
reconnectWaitInSeconds | N | 输入/输出 | 表示客户端在断开连接后尝试重新连接到服务器之前应等待的秒数。默认为 "5"。 | "5", "10" |
externalSasl | N | 输入/输出 | 使用 TLS 时,用户名是否应从附加字段(例如 CN)中获取。参见 RabbitMQ 认证机制。默认为 "false"。 | "true", "false" |
caCert | N | 输入/输出 | 用于 TLS 连接的 CA 证书。默认为 null。 | "-----BEGIN CERTIFICATE-----\nMI..." |
clientCert | N | 输入/输出 | 用于 TLS 连接的客户端证书。默认为 null。 | "-----BEGIN CERTIFICATE-----\nMI..." |
clientKey | N | 输入/输出 | 用于 TLS 连接的客户端密钥。默认为 null。 | "-----BEGIN PRIVATE KEY-----\nMI..." |
direction | N | 输入/输出 | 绑定的方向。 | "input", "output", "input, output" |
绑定支持
此组件支持 输入和输出 绑定接口。
此组件支持以下操作的 输出绑定:
create
设置每条消息的 TTL
生存时间可以在队列级别(如上所示)或消息级别定义。在消息级别定义的值将覆盖在队列级别设置的任何值。
要在消息级别设置生存时间,请在绑定调用期间使用请求体中的 metadata 部分。
字段名称为 ttlInSeconds。
示例:
curl -X POST http://localhost:3500/v1.0/bindings/myRabbitMQ \ -H "Content-Type: application/json" \ -d "{ \"data\": { \"message\": \"Hi\" }, \"metadata\": { \"ttlInSeconds\": "60" }, \"operation\": \"create\" }" curl -X POST http://localhost:3500/v1.0/bindings/myRabbitMQ \ -H "Content-Type: application/json" \ -d '{ "data": { "message": "Hi" }, "metadata": { "ttlInSeconds": "60" }, "operation": "create" }' 设置每条消息的优先级
优先级可以在消息级别定义。如果设置了 maxPriority 参数,高优先级消息将优先于其他低优先级消息。
要在消息级别设置优先级,请在绑定调用期间使用请求体中的 metadata 部分。
字段名称为 priority。
示例:
curl -X POST http://localhost:3500/v1.0/bindings/myRabbitMQ \ -H "Content-Type: application/json" \ -d "{ \"data\": { \"message\": \"Hi\" }, \"metadata\": { "priority": \"5\" }, \"operation\": \"create\" }" curl -X POST http://localhost:3500/v1.0/bindings/myRabbitMQ \ -H "Content-Type: application/json" \ -d '{ "data": { "message": "Hi" }, "metadata": { "priority": "5" }, "operation": "create" }'