The documentation you are viewing is for Dapr v1.12 which is an older version of Dapr. For up-to-date documentation, see the latest version.

Azure Service Bus

关于 Azure Service Bus pubsub 组件的详细文档

配置

若要安装 Azure Service Bus pubsub,请创建一个类型为 pubsub.azure.servicebus的组件。 请参阅本指南,了解如何创建和应用 pubsub 配置。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: servicebus-pubsub
  namespace: default
spec:
  type: pubsub.azure.servicebus
  version: v1
  metadata:
  - name: connectionString # Required
    value: "Endpoint=sb://{ServiceBusNamespace}.servicebus.windows.net/;SharedAccessKeyName={PolicyName};SharedAccessKey={Key};EntityPath={ServiceBus}"
  # - name: timeoutInSec # Optional
  #   value: 60
  # - name: handlerTimeoutInSec # Optional
  #   value: 60
  # - name: disableEntityManagement # Optional
  #   value: "false"
  # - name: maxDeliveryCount # Optional
  #   value: 3
  # - name: lockDurationInSec # Optional
  #   value: 60
  # - name: lockRenewalInSec # Optional
  #   value: 20
  # - name: maxActiveMessages # Optional
  #   value: 2000
  # - name: maxActiveMessagesRecoveryInSec # Optional
  #   value: 2
  # - name: maxConcurrentHandlers # Optional
  #   value: 10
  # - name: prefetchCount # Optional
  #   value: 5
  # - name: defaultMessageTimeToLiveInSec # Optional
  #   value: 10
  # - name: autoDeleteOnIdleInSec # Optional
  #   value: 3600
  # - name: maxReconnectionAttempts # Optional
  #   value: 30
  # - name: connectionRecoveryInSec # Optional
  #   value: 2
  # - name: publishMaxRetries # Optional
  #   value: 5
  # - name: publishInitialRetryInternalInMs # Optional
  #   value: 500

__注意:__上述设置在使用该组件的所有主题中是通用的。

元数据字段规范

字段 必填 详情 示例
connectionString 服务总线共享访问策略连接字符串 Endpoint=sb://{ServiceBusNamespace}.servicebus.windows.net/;SharedAccessKeyName={PolicyName};SharedAccessKey={Key};EntityPath={ServiceBus}
timeoutInSec 发送消息和其他管理操作的超时时间。 默认值:60 30
handlerTimeoutInSec 调用应用handler的超时。 # 可选的。 默认值:60 30
disableEntityManagement 设置为 “true “时,主题和订阅不会自动创建。 默认值为 "false" "true", "false"
maxDeliveryCount 定义服务器发送消息的尝试次数。 由服务端默认设置 10
lockDurationInSec 定义消息过期前被锁定的时长,以秒为单位。 由服务端默认设置 30
lockRenewalInSec 定义缓冲消息锁的更新频率。 默认值:20. 20
maxActiveMessages 定义一次要缓冲或处理的消息的最大数量。 默认值:10000 2000
maxActiveMessagesRecoveryInSec 定义达到最大活跃消息限制后等待的时长(秒) 默认值:2 默认值:2 10
maxConcurrentHandlers 定义并发消息处理器的最大数量 10
prefetchCount 定义预取消息的数量(用于高吞吐量/低延迟场景) 5
defaultMessageTimeToLiveInSec 默认消息存活时间 10
autoDeleteOnIdleInSec 在自动删除空闲订阅之前等待的时间(以秒为单位)。 3600
maxReconnectionAttempts 定义重新连接尝试的最大次数。 默认值:30 30
connectionRecoveryInSec 连接恢复尝试之间的等待时间(以秒为单位)。 默认值:2 2
publishMaxRetries Azure Service Bus 以"过于忙碌"为响应以限制消息时的最大重试次数。 默认值:5 5
publishInitialRetryInternalInMs Azure Service Bus 限制消息时初始指数退避的时间(以毫秒为单位)。 默认值:500 500

Azure Active Directory (AAD) 认证

Azure 服务总线 pubsub 组件支持使用所有 Azure Active Directory 机制进行身份验证。 更多信息和相关组件的元数据字段根据选择的AAD认证机制,参考Azure认证文档

消息元数据

Azure Service Bus 消息使用其他上下文元数据扩展 Dapr 消息格式。 某些元数据字段由Azure Service Bus 本身设置(只读),其他元数据字段可由客户端在发布消息时设置。

发送带元数据的消息

若要在发送消息时设置 Azure Service Bus 元数据,请在 HTTP 请求或 gRPC 元数据上设置查询参数,如此处所述。

  • metadata.MessageId
  • metadata.CorrelationId
  • metadata.SessionId
  • metadata.Label
  • metadata.ReplyTo
  • metadata.PartitionKey
  • metadata.To
  • metadata.ContentType
  • metadata.ScheduledEnqueueTimeUtc
  • metadata.ReplyToSessionId

注意: metadata.MessageId 属性没有设置云端事件的 id 属性,应该单独处理。

接收带元数据的消息

当 Dapr 调用应用程序时,它将使用 HTTP 标头或 gRPC 元数据将 Azure Service Bus 消息元数据附加到请求。 除了上面列出的 可设置元数据之外,您还可以访问以下只读消息元数据。

  • metadata.DeliveryCount
  • metadata.LockedUntilUtc
  • metadata.LockToken
  • metadata.EnqueuedTimeUtc
  • metadata.SequenceNumber

若要了解有关任何这些元数据属性的用途的更多详细信息,请参阅 官方 Azure Service Bus 文档

创建Azure Service Bus

请按照此处的说明设置Azure Service Bus Topics。

相关链接