Azure Event Hubs 绑定规约

Azure Event Hubs 绑定组件的详细文档

组件格式

要设置 Azure Event Hubs 绑定,请创建一个类型为 bindings.azure.eventhubs 的组件。请参阅此指南了解如何创建和应用绑定配置。

请参阅此文档了解如何设置 Event Hub。

apiVersion: dapr.io/v1alpha1
kind: Component
metadata:
  name: <NAME>
spec:
  type: bindings.azure.eventhubs
  version: v1
  metadata:
    # Hub 名称("topic")
    - name: eventHub
      value: "mytopic"
    - name: consumerGroup
      value: "myapp"
    # connectionString 或 eventHubNamespace 其中之一是必需的
    # 当*不*使用 Microsoft Entra ID 时使用 connectionString
    - name: connectionString
      value: "Endpoint=sb://{EventHubNamespace}.servicebus.windows.net/;SharedAccessKeyName={PolicyName};SharedAccessKey={Key};EntityPath={EventHub}"
    # 使用 Microsoft Entra ID 时使用 eventHubNamespace
    - name: eventHubNamespace
      value: "namespace"
    - name: enableEntityManagement
      value: "false"
    - name: enableInOrderMessageDelivery
      value: "false"
    # 仅当 enableEntityManagement 设置为 true 时才需要以下四个属性
    - name: resourceGroupName
      value: "test-rg"
    - name: subscriptionID
      value: "value of Azure subscription ID"
    - name: partitionCount
      value: "1"
    - name: messageRetentionInDays
      value: "3"
    # 检查点存储属性
    - name: storageAccountName
      value: "myeventhubstorage"
    - name: storageAccountKey
      value: "112233445566778899"
    - name: storageContainerName
      value: "myeventhubstoragecontainer"
    # 传递 storageAccountKey 的替代方案
    - name: storageConnectionString
      value: "DefaultEndpointsProtocol=https;AccountName=<account>;AccountKey=<account-key>"
    # 可选元数据
    - name: getAllMessageProperties
      value: "true"
    - name: direction
      value: "input, output"

规格元数据字段

字段必填绑定支持详情示例
eventHubY*输入/输出Event Hubs hub 的名称(“topic”)。当使用 Microsoft Entra ID 身份验证或连接字符串不包含 EntityPath 值时必需mytopic
connectionStringY*输入/输出Event Hub 或 Event Hub 命名空间的连接字符串。
* 与 eventHubNamespace 字段互斥。
* 当不使用 Microsoft Entra ID 身份验证时必需
"Endpoint=sb://{EventHubNamespace}.servicebus.windows.net/;SharedAccessKeyName={PolicyName};SharedAccessKey={Key};EntityPath={EventHub}""Endpoint=sb://{EventHubNamespace}.servicebus.windows.net/;SharedAccessKeyName={PolicyName};SharedAccessKey={Key}"
eventHubNamespaceY*输入/输出Event Hub 命名空间名称。
* 与 connectionString 字段互斥。
* 当使用 Microsoft Entra ID 身份验证时必需
"namespace"
enableEntityManagementN输入/输出允许管理 EventHub 命名空间和存储帐户的布尔值。默认值:false"true", "false"
enableInOrderMessageDeliveryN输入/输出允许按发布顺序传递消息的布尔值。这假设在发布或发布时设置了 partitionKey 以确保跨分区的顺序。默认值:false"true", "false"
resourceGroupNameN输入/输出Event Hub 命名空间所属的资源组名称。当启用实体管理时必需"test-rg"
subscriptionIDN输入/输出Azure 订阅 ID 值。当启用实体管理时必需"azure subscription id"
partitionCountN输入/输出新 Event Hub 命名空间的分区数。仅在启用实体管理时使用。默认值:"1""2"
messageRetentionInDaysN输入/输出在新创建的 Event Hub 命名空间中保留消息的天数。仅在启用实体管理时使用。默认值:"1""90"
consumerGroupY输入要侦听的 Event Hubs 消费者组的名称"group1"
storageAccountNameY输入用于检查点存储的存储帐户名称。"myeventhubstorage"
storageAccountKeyY*输入检查点存储帐户的存储帐户密钥。
* 使用 Microsoft Entra ID 时,如果服务主体也有权访问存储帐户,则可以省略此字段。
"112233445566778899"
storageConnectionStringY*输入检查点存储的连接字符串,是指定 storageAccountKey 的替代方案"DefaultEndpointsProtocol=https;AccountName=myeventhubstorage;AccountKey=<account-key>"
storageContainerNameY输入存储帐户名称的存储容器名称。"myeventhubstoragecontainer"
getAllMessagePropertiesN输入当设置为 true 时,从 Event Hub 消息中检索所有用户/应用程序/自定义属性,并在返回的事件元数据中转发它们。默认设置为 "false""true", "false"
directionN输入/输出绑定的方向。"input", "output", "input, output"

Microsoft Entra ID 身份验证

Azure Event Hubs 发布/订阅组件支持使用所有 Microsoft Entra ID 机制进行身份验证。有关更多信息以及根据选择的 Microsoft Entra ID 身份验证机制需要提供的相关组件元数据字段,请参阅向 Azure 进行身份验证的文档

绑定支持

此组件支持输出绑定,具有以下操作:

  • create:向 Azure Event Hubs 发布新消息

输入绑定到 Azure IoT Hub 事件

Azure IoT Hub 提供一个与 Event Hubs 兼容的端点,因此 Dapr 应用程序可以创建输入绑定,使用 Event Hubs 绑定组件来读取 Azure IoT Hub 事件。

由 Azure IoT Hub 设备创建的设备到云事件将包含其他IoT Hub 系统属性,Dapr 的 Azure Event Hubs 绑定将在响应元数据中返回以下内容:

系统属性名称描述与路由查询关键字
iothub-connection-auth-generation-id发送消息的设备的 connectionDeviceGenerationId。请参阅 IoT Hub 设备标识属性
iothub-connection-auth-method用于对发送消息的设备进行身份验证的 connectionAuthMethod
iothub-connection-device-id发送消息的设备的 deviceId。请参阅 IoT Hub 设备标识属性
iothub-connection-module-id发送消息的设备的 moduleId。请参阅 IoT Hub 设备标识属性
iothub-enqueuedtime设备到云消息被 IoT Hub 接收的 enqueuedTime,采用 RFC3339 格式。
message-id用户可设置的 AMQP messageId

例如,HTTP Read() 响应的标头将包含:

{
  'user-agent': 'fasthttp',
  'host': '127.0.0.1:3000',
  'content-type': 'application/json',
  'content-length': '120',
  'iothub-connection-device-id': 'my-test-device',
  'iothub-connection-auth-generation-id': '637618061680407492',
  'iothub-connection-auth-method': '{"scope":"module","type":"sas","issuer":"iothub","acceptingIpFilterRule":null}',
  'iothub-connection-module-id': 'my-test-module-a',
  'iothub-enqueuedtime': '2021-07-13T22:08:09Z',
  'message-id': 'my-custom-message-id',
  'x-opt-sequence-number': '35',
  'x-opt-enqueued-time': '2021-07-13T22:08:09Z',
  'x-opt-offset': '21560',
  'traceparent': '00-4655608164bc48b985b42d39865f3834-ed6cf3697c86e7bd-01'
}

相关链接