/
EventHubTrigger.cs
37 lines (35 loc) · 1.48 KB
/
EventHubTrigger.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
using Microsoft.Azure.EventHubs;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Azure.WebJobs.ServiceBus;
using StackExchange.Redis;
using System;
using System.Threading.Tasks;
namespace OrderedEventHubs
{
public static class EventHubTrigger
{
private static ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(Environment.GetEnvironmentVariable("Redis"));
private static IDatabase db = redis.GetDatabase();
[FunctionName("EventHubTrigger")]
public static async Task RunAsync([EventHubTrigger(eventHubName: "events", Connection = "EventHub")] EventData[] eventDataSet, TraceWriter log)
{
log.Info($"Triggered batch of size {eventDataSet.Length}");
foreach (var eventData in eventDataSet) {
try
{
if((string)eventData.Properties["counter"] =="500")
{
throw new ArgumentException("Got the 500 item");
}
await db.ListRightPushAsync("events:" + eventData.Properties["partitionKey"], (string)eventData.Properties["counter"]);
}
catch(Exception ex)
{
log.Info($"Caught exception: {ex.Message}");
await db.ListRightPushAsync("events:" + eventData.Properties["partitionKey"], (string)eventData.Properties["counter"] + "CAUGHT0");
}
}
}
}
}