你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

EventHubProducerClient class

EventHubProducerClient 用于将事件发送到事件中心。

有多种方法可以创建 EventHubProducerClient

  • 使用为事件中心实例创建的 SAS 策略中的连接字符串。
  • 使用为事件中心命名空间创建的 SAS 策略中的连接字符串,以及事件中心实例的名称
  • 使用完整的命名空间(如 <yournamespace>.servicebus.windows.net)和凭据对象。

(可选)还可以传递选项包来配置重试策略或代理设置。

构造函数

EventHubProducerClient(string, EventHubClientOptions)

EventHubProducerClient 用于将事件发送到事件中心。 使用 options 参数配置重试策略或代理设置。

EventHubProducerClient(string, string, EventHubClientOptions)

EventHubProducerClient 用于将事件发送到事件中心。 使用 options 参数配置重试策略或代理设置。

EventHubProducerClient(string, string, TokenCredential | NamedKeyCredential | SASCredential, EventHubClientOptions)

EventHubProducerClient 用于将事件发送到事件中心。 使用 options 参数配置重试策略或代理设置。

属性

eventHubName

为其创建此客户端的事件中心实例的名称。

fullyQualifiedNamespace

为其创建此客户端的事件中心实例的完全限定命名空间。 这很可能类似于 .servicebus.windows.net。

identifier

用于标识此 EventHubProducerClient 的名称。 如果未指定或为空,将生成随机唯一的一个。

方法

close()

关闭与事件中心实例的 AMQP 连接,并返回将在断开连接完成后解决的承诺。

createBatch(CreateBatchOptions)

创建 一个 实例 EventDataBatch ,可以在达到最大支持大小之前向其添加事件。 可以将批处理传递给 的 EventHubProducerClientsendBatch 方法,以发送到Azure 事件中心。

partitionKey 或 partitionId 具有不同值的事件需要放入不同的批处理中。 若要简化跨分区的此类批处理管理,或让客户端自动批处理事件并在特定间隔内发送事件,请改用 EventHubBufferedProducerClient

以下示例假定你手头有一个要安全地批处理的事件数组。 如果事件逐个传入, EventHubBufferedProducerClient 建议改为进行批处理的有效管理。

用法示例:

const client = new EventHubProducerClient(connectionString);
let batch = await client.createBatch();
for (let i = 0; i < messages.length; i++) {
 if (!batch.tryAdd(messages[i])) {
   await client.sendBatch(batch);
   batch = await client.createBatch();
   if (!batch.tryAdd(messages[i])) {
     throw new Error("Message too big to fit")
   }
   if (i === messages.length - 1) {
     await client.sendBatch(batch);
   }
  }
}
getEventHubProperties(GetEventHubPropertiesOptions)

提供事件中心运行时信息。

getPartitionIds(GetPartitionIdsOptions)

提供与事件中心关联的每个分区的 ID。

getPartitionProperties(string, GetPartitionPropertiesOptions)

提供有关指定分区的状态的信息。

sendBatch(EventDataBatch, OperationOptions)

使用 EventHubProducerClient.createBatch() 创建的一批事件发送到关联的事件中心。

partitionKey 或 partitionId 具有不同值的事件需要放入不同的批处理中。 若要简化跨分区的此类批处理管理,或让客户端自动批处理事件并在特定间隔内发送事件,请改用 EventHubBufferedProducerClient

以下示例假定你手头有一个要安全地批处理的事件数组。 如果事件逐个传入, EventHubBufferedProducerClient 建议改为进行批处理的有效管理。

用法示例:

const client = new EventHubProducerClient(connectionString);
let batch = await client.createBatch();
for (let i = 0; i < messages.length; i++) {
 if (!batch.tryAdd(messages[i])) {
   await client.sendBatch(batch);
   batch = await client.createBatch();
   if (!batch.tryAdd(messages[i])) {
     throw new Error("Message too big to fit")
   }
   if (i === messages.length - 1) {
     await client.sendBatch(batch);
   }
  }
}
sendBatch(EventData[] | AmqpAnnotatedMessage[], SendBatchOptions)

将事件数组作为批发送到关联的事件中心。

Azure 事件中心对可以发送的批的大小有限制,如果超出,将导致代码 MessageTooLargeError为 的错误。 若要在批大小限制内安全地发送,请改用 EventHubProducerClient.createBatch()EventHubBufferedProducerClient

用法示例:

const client = new EventHubProducerClient(connectionString);
await client.sendBatch(messages);

构造函数详细信息

EventHubProducerClient(string, EventHubClientOptions)

EventHubProducerClient 用于将事件发送到事件中心。 使用 options 参数配置重试策略或代理设置。

new EventHubProducerClient(connectionString: string, options?: EventHubClientOptions)

参数

connectionString

string

用于连接到事件中心实例的连接字符串。 此连接字符串中应包含共享密钥属性和事件中心路径。 例如'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;EntityPath=my-event-hub-name'。

options
EventHubClientOptions

配置客户端时要应用的一组选项。

  • retryOptions :为客户端上的所有操作配置重试策略。 例如,{ "maxRetries": 4 }{ "maxRetries": 4, "retryDelayInMs": 30000 }
  • webSocketOptions:配置通过 Web 套接字的 AMQP 连接的通道。
  • userAgent :要追加到传递给服务的内置用户代理字符串的字符串。

EventHubProducerClient(string, string, EventHubClientOptions)

EventHubProducerClient 用于将事件发送到事件中心。 使用 options 参数配置重试策略或代理设置。

new EventHubProducerClient(connectionString: string, eventHubName: string, options?: EventHubClientOptions)

参数

connectionString

string

用于连接到事件中心命名空间的连接字符串。 共享密钥属性应包含在此连接字符串中,但不包含在事件中心路径中,例如'Endpoint=sb://my-servicebus-namespace.servicebus.windows.net/;SharedAccessKeyName=my-SA-name;SharedAccessKey=my-SA-key;'。

eventHubName

string

要将客户端连接到的特定事件中心的名称。

options
EventHubClientOptions

配置客户端时要应用的一组选项。

  • retryOptions :为客户端上的所有操作配置重试策略。 例如,{ "maxRetries": 4 }{ "maxRetries": 4, "retryDelayInMs": 30000 }
  • webSocketOptions:配置通过 Web 套接字的 AMQP 连接的通道。
  • userAgent :要追加到传递给服务的内置用户代理字符串的字符串。

EventHubProducerClient(string, string, TokenCredential | NamedKeyCredential | SASCredential, EventHubClientOptions)

EventHubProducerClient 用于将事件发送到事件中心。 使用 options 参数配置重试策略或代理设置。

new EventHubProducerClient(fullyQualifiedNamespace: string, eventHubName: string, credential: TokenCredential | NamedKeyCredential | SASCredential, options?: EventHubClientOptions)

参数

fullyQualifiedNamespace

string

可能类似于 .servicebus.windows.net 的完整命名空间

eventHubName

string

要将客户端连接到的特定事件中心的名称。

credential

TokenCredential | NamedKeyCredential | SASCredential

客户端用于获取令牌的凭据对象,用于对与 Azure 事件中心 服务的连接进行身份验证。 有关创建支持 AAD 身份验证的凭据,请参阅@azure/标识。 AzureNamedKeyCredential 如果要在 SharedAccessKeyName 不使用连接字符串的情况下传入 和 SharedAccessKey ,请使用 from @azure/core-auth。 这些字段分别映射到 name 中的 AzureNamedKeyCredentialkey 字段。 AzureSASCredential如果要在不使用连接字符串的情况下传入 ,SharedAccessSignature请使用 from @azure/core-auth。 此字段映射到 signature 中的 AzureSASCredential

options
EventHubClientOptions

配置客户端时要应用的一组选项。

  • retryOptions :为客户端上的所有操作配置重试策略。 例如,{ "maxRetries": 4 }{ "maxRetries": 4, "retryDelayInMs": 30000 }
  • webSocketOptions:配置通过 Web 套接字的 AMQP 连接的通道。
  • userAgent :要追加到传递给服务的内置用户代理字符串的字符串。

属性详细信息

eventHubName

为其创建此客户端的事件中心实例的名称。

string eventHubName

属性值

string

fullyQualifiedNamespace

为其创建此客户端的事件中心实例的完全限定命名空间。 这很可能类似于 .servicebus.windows.net。

string fullyQualifiedNamespace

属性值

string

identifier

用于标识此 EventHubProducerClient 的名称。 如果未指定或为空,将生成随机唯一的一个。

identifier: string

属性值

string

方法详细信息

close()

关闭与事件中心实例的 AMQP 连接,并返回将在断开连接完成后解决的承诺。

function close(): Promise<void>

返回

Promise<void>

Promise

createBatch(CreateBatchOptions)

创建 一个 实例 EventDataBatch ,可以在达到最大支持大小之前向其添加事件。 可以将批处理传递给 的 EventHubProducerClientsendBatch 方法,以发送到Azure 事件中心。

partitionKey 或 partitionId 具有不同值的事件需要放入不同的批处理中。 若要简化跨分区的此类批处理管理,或让客户端自动批处理事件并在特定间隔内发送事件,请改用 EventHubBufferedProducerClient

以下示例假定你手头有一个要安全地批处理的事件数组。 如果事件逐个传入, EventHubBufferedProducerClient 建议改为进行批处理的有效管理。

用法示例:

const client = new EventHubProducerClient(connectionString);
let batch = await client.createBatch();
for (let i = 0; i < messages.length; i++) {
 if (!batch.tryAdd(messages[i])) {
   await client.sendBatch(batch);
   batch = await client.createBatch();
   if (!batch.tryAdd(messages[i])) {
     throw new Error("Message too big to fit")
   }
   if (i === messages.length - 1) {
     await client.sendBatch(batch);
   }
  }
}
function createBatch(options?: CreateBatchOptions): Promise<EventDataBatch>

参数

options
CreateBatchOptions

配置批处理的行为。

  • partitionKey:一个值,由Azure 事件中心服务进行哈希处理,用于确定需要将事件发送到的分区。
  • partitionId :需要将事件批发送到的分区的 ID。
  • maxSizeInBytes:批大小的上限。 达到此限制后,函数 tryAdd 将返回 false
  • abortSignal :发出取消操作的请求的信号。

返回

Promise<EventDataBatch>

Promise

getEventHubProperties(GetEventHubPropertiesOptions)

提供事件中心运行时信息。

function getEventHubProperties(options?: GetEventHubPropertiesOptions): Promise<EventHubProperties>

参数

options
GetEventHubPropertiesOptions

要应用于操作调用的选项集。

返回

一个承诺,该承诺使用有关事件中心实例的信息进行解析。

getPartitionIds(GetPartitionIdsOptions)

提供与事件中心关联的每个分区的 ID。

function getPartitionIds(options?: GetPartitionIdsOptions): Promise<string[]>

参数

options
GetPartitionIdsOptions

要应用于操作调用的选项集。

返回

Promise<string[]>

使用表示与事件中心关联的每个分区的 ID 的字符串数组解析的承诺。

getPartitionProperties(string, GetPartitionPropertiesOptions)

提供有关指定分区的状态的信息。

function getPartitionProperties(partitionId: string, options?: GetPartitionPropertiesOptions): Promise<PartitionProperties>

参数

partitionId

string

需要信息的分区的 ID。

options
GetPartitionPropertiesOptions

要应用于操作调用的选项集。

返回

一个承诺,该承诺通过有关分区 的状态的信息进行解析。

sendBatch(EventDataBatch, OperationOptions)

使用 EventHubProducerClient.createBatch() 创建的一批事件发送到关联的事件中心。

partitionKey 或 partitionId 具有不同值的事件需要放入不同的批处理中。 若要简化跨分区的此类批处理管理,或让客户端自动批处理事件并在特定间隔内发送事件,请改用 EventHubBufferedProducerClient

以下示例假定你手头有一个要安全地批处理的事件数组。 如果事件逐个传入, EventHubBufferedProducerClient 建议改为进行批处理的有效管理。

用法示例:

const client = new EventHubProducerClient(connectionString);
let batch = await client.createBatch();
for (let i = 0; i < messages.length; i++) {
 if (!batch.tryAdd(messages[i])) {
   await client.sendBatch(batch);
   batch = await client.createBatch();
   if (!batch.tryAdd(messages[i])) {
     throw new Error("Message too big to fit")
   }
   if (i === messages.length - 1) {
     await client.sendBatch(batch);
   }
  }
}
function sendBatch(batch: EventDataBatch, options?: OperationOptions): Promise<void>

参数

batch
EventDataBatch

可以使用 createBatch 方法创建的一批事件。

options
OperationOptions

一组选项,可以指定这些选项来影响将事件发送到关联的事件中心的方式。

  • abortSignal :发出取消发送操作的请求的信号。

返回

Promise<void>

Promise

sendBatch(EventData[] | AmqpAnnotatedMessage[], SendBatchOptions)

将事件数组作为批发送到关联的事件中心。

Azure 事件中心对可以发送的批的大小有限制,如果超出,将导致代码 MessageTooLargeError为 的错误。 若要在批大小限制内安全地发送,请改用 EventHubProducerClient.createBatch()EventHubBufferedProducerClient

用法示例:

const client = new EventHubProducerClient(connectionString);
await client.sendBatch(messages);
function sendBatch(batch: EventData[] | AmqpAnnotatedMessage[], options?: SendBatchOptions): Promise<void>

参数

batch

EventData[] | AmqpAnnotatedMessage[]

EventDataAmqpAnnotatedMessage的数组。

options
SendBatchOptions

一组选项,可以指定这些选项来影响将事件发送到关联的事件中心的方式。

  • abortSignal :发出取消发送操作的请求的信号。
  • partitionId :此批处理将发送到的分区。 如果已设置, partitionKey 则无法设置。
  • partitionKey :经过哈希处理以生成分区分配的值。 如果已设置, partitionId 则无法设置。

返回

Promise<void>

Promise