
使用
“
函数即服务
”
的微服务
|
131
以下是编制器的示例代码。
public int orchestrationFunction(Event[] events, Context context) {
for(Event event: events) {
//同步的函数调用
Result resultFromA = invokeFunctionA(event);
Result resultFromB = invokeFunctionB(event, resultFromA);
Output output = composeOutputEvent(resultFromA, resultFromB);
//写到输出事件流
producer.produce("Output Stream", output);
}
//这会通知FaaS框架更新消费者偏移量
context.success();
return 0;
}
编制器函数按顺序调用函数
A
和函数
B
,并等待每个函数的结果。如果需要,可以将函数
A
的输出发送给函数
B
。工作流在完全处理完当前事件之后才会开启下一个事件的处理
,
这确保了按照偏移量顺序来进行事件处理。一旦消费者函数处理完一批事件,它就可以发
出一条成功消息并相应地更新偏移量。
队列驱动的事件处理
。
如果使用具有单独提交功能的队列,则每个事件都可以触发一个单
独的编制器函数。编制器需要在完成处理工作后向队列提交处理确认。如果编制器未能完
成处理工作,那么该任务将被新创建的下一个编制器实例接收。 ...