EventHubProducerClient class
EventHubProducerClient
類別可用來將事件傳送至事件中樞。
有多種方式可以建立 EventHubProducerClient
- 使用針對事件中樞實例建立的 SAS 原則中的連接字串。
- 使用針對事件中樞命名空間所建立 SAS 原則的連接字串,以及事件中樞實例的名稱
- 使用完整的命名空間,例如
<yournamespace>.servicebus.windows.net
和認證物件。
或者,您也可以傳遞選項包來設定重試原則或 Proxy 設定。
建構函式
Event |
|
Event |
|
Event |
|
屬性
event |
建立此用戶端的事件中樞實例名稱。 |
fully |
建立此用戶端之事件中樞實例的完整命名空間。 這可能類似於 .servicebus.windows.net。 |
identifier | 用來識別此 EventHubProducerClient 的名稱。 如果未指定或空白,則會產生隨機唯一的 。 |
方法
close() | 關閉事件中樞實例的AMQP連線,並傳回在中斷連線完成時將解決的承諾。 |
create |
建立 具有不同 partitionKey 或 partitionId 值的事件必須放入不同的批次中。
若要簡化跨分割區的這類批次管理,或讓用戶端自動批處理事件,並以特定間隔傳送事件,請改用 下列範例假設您手邊有可安全地批處理的事件陣列。
如果您有逐一傳入的事件,建議改用 範例用法:
|
get |
提供事件中樞運行時間資訊。 |
get |
提供與事件中樞相關聯的每個分割區標識碼。 |
get |
提供指定數據分割狀態的相關信息。 |
send |
將使用 具有不同 partitionKey 或 partitionId 值的事件必須放入不同的批次中。
若要簡化跨分割區的這類批次管理,或讓用戶端自動批處理事件,並以特定間隔傳送事件,請改用 下列範例假設您手邊有可安全地批處理的事件陣列。
如果您有逐一傳入的事件,建議改用 範例用法:
|
send |
將事件陣列當做批次傳送至相關聯的事件中樞。 Azure 事件中樞的批次大小有限制,如果超過,則會導致錯誤碼 範例用法:
|
建構函式詳細資料
EventHubProducerClient(string, EventHubClientOptions)
EventHubProducerClient
類別可用來將事件傳送至事件中樞。
使用 options
參數來設定重試原則或 Proxy 設定。
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
參數來設定重試原則或 Proxy 設定。
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
參數來設定重試原則或 Proxy 設定。
new EventHubProducerClient(fullyQualifiedNamespace: string, eventHubName: string, credential: TokenCredential | NamedKeyCredential | SASCredential, options?: EventHubClientOptions)
參數
- fullyQualifiedNamespace
-
string
可能類似於 .servicebus.windows.net 的完整命名空間
- eventHubName
-
string
要連接用戶端的特定事件中樞名稱。
- credential
用戶端用來取得令牌的認證物件,用來驗證與 Azure 事件中樞服務的連線。
請參閱@azure/身分識別,以建立支援 AAD 驗證的認證。如果您想要傳入 SharedAccessKeyName
和 SharedAccessKey
而不使用連接字串,請使用 @azure/core-auth 中的 AzureNamedKeyCredential
。 這些欄位分別對應至 AzureNamedKeyCredential
中的 [name
] 和 [key
] 字段。
如果您想要傳入 SharedAccessSignature
而不使用連接字串,請使用 @azure/core-auth 中的 AzureSASCredential
。 此欄位會對應至 AzureSASCredential
中的 signature
。
- 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>
承諾
createBatch(CreateBatchOptions)
建立 EventDataBatch
實例,在其中可以新增事件,直到達到支援的大小上限為止。
批次可以傳遞至要傳送至 Azure 事件中樞之 EventHubProducerClient
的 sendBatch 方法。
具有不同 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
:需要傳送事件批次的分割區標識符。 -
maxSizeInBytes
:批次大小的上限。 達到此限制之後,tryAdd
函式會傳回false
。 -
abortSignal
:發出要求以取消作業的訊號。
傳回
Promise<EventDataBatch>
承諾
getEventHubProperties(GetEventHubPropertiesOptions)
提供事件中樞運行時間資訊。
function getEventHubProperties(options?: GetEventHubPropertiesOptions): Promise<EventHubProperties>
參數
- options
- GetEventHubPropertiesOptions
要套用至作業呼叫的選項集。
傳回
Promise<EventHubProperties>
可透過事件中樞實例相關信息解析的承諾。
getPartitionIds(GetPartitionIdsOptions)
提供與事件中樞相關聯的每個分割區標識碼。
function getPartitionIds(options?: GetPartitionIdsOptions): Promise<string[]>
參數
- options
- GetPartitionIdsOptions
要套用至作業呼叫的選項集。
傳回
Promise<string[]>
承諾,會使用字串數位分析,代表與事件中樞相關聯之每個分割區的識別碼。
getPartitionProperties(string, GetPartitionPropertiesOptions)
提供指定數據分割狀態的相關信息。
function getPartitionProperties(partitionId: string, options?: GetPartitionPropertiesOptions): Promise<PartitionProperties>
參數
- partitionId
-
string
需要資訊的分割區標識碼。
- 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>
承諾
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>
承諾