我有一个Node.js timerTrigger
Azure函数,它处理集合并对处理结果进行排队以便进一步处理(通过Node.js queueTrigger
函数)。
代码如下:
module.exports = function (context, myTimer) {
collection.forEach(function (item) {
var items = [];
// do some work and fill 'items'
var toBeQueued = { items: items };
context.bindings.myQueue = toBeQueued;
});
context.done();
};
此代码仅排队最后toBeQueued
而不是每个我正在排队的队列。
有没有办法排队多个项目?
更新
要清楚,我在谈论在toBeQueued
的每次迭代中排队forEach
,而不仅仅是排队一个数组。是的,Azure Functions存在一个问题,因为我无法对阵列进行排队,但我有一个解决方法;即,{ items: items }
。
答案 0 :(得分:4)
还没有,但是我们会在一周内解决这个问题,请继续关注:)您可以将数组传递给绑定,因为您正在尝试上面做。
我们在公开回购here中有一个跟踪此问题的问题。感谢您的报道。
答案 1 :(得分:3)
Mathewc的答案是正确的节点。
对于C#,您今天可以通过指定ICollector<T>
作为输出队列参数的类型。
以下是我有两个输出队列的示例,其中一个是通过for循环添加的。
public static void Run(Item inbound, DateTimeOffset InsertionTime, ICollector<Item> outbound, ICollector<LogItem> telemetry, TraceWriter log)
{
log.Verbose($"C# Queue trigger function processed: {inbound}");
telemetry.Add(new LogItem(inbound, InsertionTime));
if(inbound.current_generation < inbound.max_generation)
{
for(int i = 0; i < inbound.multiplier; i++) {
outbound.Add(Item.nextGen(inbound));
}
}
}