你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
EventHubProducerClient class
类 EventHubProducerClient
用于将事件发送到事件中心。
有多种方法可以创建 EventHubProducerClient
- 使用为事件中心实例创建的 SAS 策略中的连接字符串。
- 使用为事件中心命名空间创建的 SAS 策略中的连接字符串,以及事件中心实例的名称
- 使用完整的命名空间(如
<yournamespace>.servicebus.windows.net
)和凭据对象。
(可选)还可以传递选项包来配置重试策略或代理设置。
构造函数
Event |
类 |
Event |
类 |
Event |
类 |
属性
event |
为其创建此客户端的事件中心实例的名称。 |
fully |
为其创建此客户端的事件中心实例的完全限定命名空间。 这很可能类似于 .servicebus.windows.net。 |
identifier | 用于标识此 EventHubProducerClient 的名称。 如果未指定或为空,将生成随机唯一的一个。 |
方法
close() | 关闭与事件中心实例的 AMQP 连接,并返回将在断开连接完成后解决的承诺。 |
create |
创建 一个 实例 partitionKey 或 partitionId 具有不同值的事件需要放入不同的批处理中。
若要简化跨分区的此类批处理管理,或让客户端自动批处理事件并在特定间隔内发送事件,请改用 以下示例假定你手头有一个要安全地批处理的事件数组。
如果事件逐个传入, 用法示例:
|
get |
提供事件中心运行时信息。 |
get |
提供与事件中心关联的每个分区的 ID。 |
get |
提供有关指定分区的状态的信息。 |
send |
使用 partitionKey 或 partitionId 具有不同值的事件需要放入不同的批处理中。
若要简化跨分区的此类批处理管理,或让客户端自动批处理事件并在特定间隔内发送事件,请改用 以下示例假定你手头有一个要安全地批处理的事件数组。
如果事件逐个传入, 用法示例:
|
send |
将事件数组作为批发送到关联的事件中心。 Azure 事件中心对可以发送的批的大小有限制,如果超出,将导致代码 用法示例:
|
构造函数详细信息
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
客户端用于获取令牌的凭据对象,用于对与 Azure 事件中心 服务的连接进行身份验证。
有关创建支持 AAD 身份验证的凭据,请参阅@azure/标识。 AzureNamedKeyCredential
如果要在 SharedAccessKeyName
不使用连接字符串的情况下传入 和 SharedAccessKey
,请使用 from @azure/core-auth。 这些字段分别映射到 name
中的 AzureNamedKeyCredential
和 key
字段。
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
,可以在达到最大支持大小之前向其添加事件。
可以将批处理传递给 的 EventHubProducerClient
sendBatch 方法,以发送到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
要应用于操作调用的选项集。
返回
Promise<EventHubProperties>
一个承诺,该承诺使用有关事件中心实例的信息进行解析。
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
要应用于操作调用的选项集。
返回
Promise<PartitionProperties>
一个承诺,该承诺通过有关分区 的状态的信息进行解析。
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 方法创建的一批事件。
返回
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
的数组。
- options
- SendBatchOptions
一组选项,可以指定这些选项来影响将事件发送到关联的事件中心的方式。
-
abortSignal
:发出取消发送操作的请求的信号。 -
partitionId
:此批处理将发送到的分区。 如果已设置,partitionKey
则无法设置。 -
partitionKey
:经过哈希处理以生成分区分配的值。 如果已设置,partitionId
则无法设置。
返回
Promise<void>
Promise