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"

规范元数据字段

发布新的 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"
      }'

相关链接