Functions.Templates/Templates/EventHubTrigger-FSharp-5.x/EventHubTriggerFSharp.fs (25 lines of code) (raw):
namespace Company.Function
open System
open System.Text
open System.Threading.Tasks
open Microsoft.Azure.EventHubs
open Microsoft.Azure.WebJobs
open Microsoft.Extensions.Logging
module EventHuBTriggerFSharp =
[<FunctionName("EventHubTriggerFSharp")>]
let run([<EventHubTrigger("eventHubNameValue", Connection="ConnectionValue")>] events: EventData[], log: ILogger) =
async {
let exns = ResizeArray<Exception>()
for eventData in events do
try
let msgBody = Encoding.UTF8.GetString(eventData.Body.Array, eventData.Body.Offset, eventData.Body.Count)
let msg = sprintf "F# Event Hub trigger function processed a message: %s" msgBody
log.LogInformation msg
Task.Yield() |> Async.AwaitTask
with
| e -> exns.Add(e)
if exns.Count > 1 then
raise(AggregateException(exns))
if exns.Count = 1 then
raise(exns.[0])
} |> Async.StartAsTask