为事件中心输出绑定设置 partitionKey

Set partitionKey for the event hub output binding

我有一个 javascript 函数应用程序,它定义了指向事件中心的输出绑定,如 here 所述。我一次发送多条消息(批量)以确保最佳性能:

var message1 = //create javascript object here
var message2 = //create javascript object here
(...)

context.bindings.outputEventHubMessage = [];
context.bindings.outputEventHubMessage.push(message1);
context.bindings.outputEventHubMessage.push(message2);
(...)

context.done();

可行,但我想在消息级别设置分区键,以确保具有相同分区键的消息最终位于相同的 EH 分区中。我试过以下:

message1.partitionKey = "ABC";
message2.partitionKey = "ABC";

...但它不起作用 - 对于大量消息,我注意到具有相同分区键的消息具有不同的分区 ID。

批量发送可以吗?如果不是,那在发送 1 对 1 时是否有效?

基于 this discussion,目前的绑定方式似乎无法实现。虽然讨论是关于 C# 的,但同样适用于其他语言。

考虑到事件中心 SDK 中的更改,至少对于 C#,似乎可以通过直接绑定到 EventHubClient 来实现 an option。但这对于其他语言是不可能的。

解决方法是直接使用 Azure Event Hubs NodeJS SDK 而不是使用绑定。