Azure函数队列触发器

时间:2018-08-10 09:45:22

标签: c# azure azure-functions

如何创建队列触发器,该触发器可以将Queue中的项目集合用作触发器。

我当前的队列触发器看起来像

   public static async Task Run(
        [QueueTrigger("socmapping")]
        SocMapping myQueueItem,
        [Queue("socmapping-invalid")]
        IAsyncCollector<SocMapping> invalidSocMappings,
        TraceWriter log,
        [Queue("projectedavfeedforsocmapping")]
        IAsyncCollector<ProjectedVacancySummary> projectedVacancySummary,
        [DocumentDB("AVFeedAudit", "AuditRecords", ConnectionStringSetting = "AVAuditCosmosDB")]
        IAsyncCollector<AuditRecord<object, object>> auditRecord)

但是我想要类似的东西(可以从Queue中获取 n 个项目)[下面的代码抛出异常,并说它是json数组]

  public static async Task Run(
        [QueueTrigger("socmapping")]
        ***List<SocMapping> myQueueItem,***
        [Queue("socmapping-invalid")]
        IAsyncCollector<SocMapping> invalidSocMappings,
        TraceWriter log,
        [Queue("projectedavfeedforsocmapping")]
        IAsyncCollector<ProjectedVacancySummary> projectedVacancySummary,
        [DocumentDB("AVFeedAudit", "AuditRecords", ConnectionStringSetting = "AVAuditCosmosDB")]
        IAsyncCollector<AuditRecord<object, object>> auditRecord)

因为我要对队列项以及函数进行批处理,所以仅当队列中存在任何项时才应触发。要从队列中取出(10)并处理触发函数。

我该如何实现?

1 个答案:

答案 0 :(得分:4)

这是不可能的。每个队列中的每条消息都会触发一次Azure函数。某些触发器类型支持批处理参数(例如,事件中心或Cosmos DB),但是队列触发器不是其中之一。