我有一个NodeJS azure函数,它从EventHubA接收一批事件。它对单个事件进行一些处理,大约需要3秒,并向EventHubB发送一个新事件。
我想在批处理中的一个事件被处理后立即将数据发送到EventHubB;而不是等待整个批处理,然后立即发送所有事件输出。
我在EventHub输出绑定文档中尝试了示例,但这似乎是在函数结束时发送输出事件。
我希望它能在事件被推到列表中时立即将它们推到EventhubB。
有没有办法在输出事件被处理后立即发送它们,而不需要等待整个批处理完成?目的是减少输出事件的延迟。
这里是index.js
module.exports = async function (context, events) {
context.bindings.outputEventHubEvent = [];
for (let i = 0; i < events.length; i++) {
let event = JSON.parse(events[i]);
let output = await someFunctionWhichTakes5Seconds(event);
context.bindings.outputEventHubEvent.push(output);
}
context.done();
};
function.json
{
"bindings": [
{
"type": "eventHubTrigger",
"name": "eventhubA",
"direction": "in",
"eventHubName": "EventHubA",
"connection": "ConnectionStringA",
"cardinality": "many",
"consumerGroup": "Sample",
"dataType": "string",
"maxBatchSize": 512
},
{
"type": "eventHub",
"name": "outputEventHubEvent",
"eventHubName": "EventHubB",
"connection": "ConnectionStringB",
"direction": "out"
}
]
}
我想在输出事件生成后立即将其发送到eventHub,而不是在整个批处理之后。
1条答案
按热度按时间icnyk63a1#
我能够使用此代码将处理后的消息逐个发送到第二个EventHub。
使用MS Doc作为参考。
我使用了默认的EventHub触发器示例代码,并根据代码中的要求进行了一些更改。
index.js
:function.json
:Output
: