Functions.Templates/Templates/EventHubTrigger-CSharp-6.x/run.csx (25 lines of code) (raw):
#r "Azure.Messaging.EventHubs"
#r "System.Memory.Data"
using System;
using System.Text;
using Azure.Messaging.EventHubs;
public static async Task Run(EventData[] events, ILogger log)
{
var exceptions = new List<Exception>();
foreach (EventData eventData in events)
{
try
{
// Replace these two lines with your processing logic.
log.LogInformation($"C# Event Hub trigger function processed a message: {eventData.EventBody}");
await Task.Yield();
}
catch (Exception e)
{
// We need to keep processing the rest of the batch - capture this exception and continue.
// Also, consider capturing details of the message that failed processing so it can be processed again later.
exceptions.Add(e);
}
}
// Once processing of the batch is complete, if any messages in the batch failed processing throw an exception so that there is a record of the failure.
if (exceptions.Count > 1)
throw new AggregateException(exceptions);
if (exceptions.Count == 1)
throw exceptions.Single();
}