首页 > 解决方案 > 为事件中心输出绑定设置 partitionKey

问题描述

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

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-by-1 时会起作用吗?

标签: javascriptazure-functionsazure-eventhubazure-function-app

解决方案


根据这个讨论,现在绑定的工作方式似乎是不可能的。虽然讨论是关于 C#,但同样适用于其他语言。

考虑到事件中心 SDK 的变化,至少对于 C#,似乎有一个选项可以直接绑定到EventHubClient。但这对于其他语言是不可能的。

解决方法是直接使用Azure 事件中心 NodeJS SDK,而不是使用绑定。


推荐阅读