The documentation you are viewing is for Dapr v1.5 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: 10
  # - name: maxReconnectionAttempts # Optional
  #   value: 30
  # - name: connectionRecoveryInSec # Optional
  #   value: 2
  # - name: publishMaxRetries # Optional
  #   value: 5
  # - name: publishInitialRetryInternalInMs # Optional
  #   value: 500

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

元数据字段规范

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

消息元数据

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。

相关链接