public static void Run( [EventHubTrigger("%EventHubName%", Connection = "EventHubConnection", ConsumerGroup = "%ConsumerGroupName%")] EventData[] eventHubMessages, Microsoft.Azure.WebJobs.ExecutionContext exCtx, PartitionContext PartitionContext, TraceWriter log) { try { log.Info($"Function1 | Run - functionId: {exCtx.InvocationId}"); Schema writerObjectSchema = Schema.Parse(SchemaClass.SCHEMA_OBJECT_ENTITY); Avro.Specific.SpecificDatumReader <ObjectEntity> r = new Avro.Specific.SpecificDatumReader <ObjectEntity>(writerObjectSchema, writerObjectSchema); for (int i = 0; i < eventHubMessages.Length; i++) { ObjectEntity objectEntityWithSchema = null; using (MemoryStream memStream = new MemoryStream(eventHubMessages[i].GetBytes())) { memStream.Seek(0, SeekOrigin.Begin); objectEntityWithSchema = r.Read(null, new Avro.IO.BinaryDecoder(memStream)); } /// Here use the deserialized object for your logic /// Put your code here /// } log.Info($"Function1 | Run - functionId: {exCtx.InvocationId}"); } catch (Exception ex) { log.Error($"Function1 | Run - functionId: {exCtx.InvocationId}. Error StackTrace: {ex.StackTrace}"); throw; } }
static void Main(string[] args) { String schema = new StreamReader("user.avsc").ReadToEnd(); Avro.Schema avschema = Avro.Schema.Parse(schema); DatumReader <User> reader = new Avro.Specific.SpecificDatumReader <User>(avschema, avschema); Stream inStr = new FileStream("users.avro", FileMode.Open); IFileReader <User> dataFileReader = DataFileReader <User> .OpenReader(inStr, avschema); while (dataFileReader.HasNext()) { User record = dataFileReader.Next(); Console.WriteLine("Specific Obj Read ==>" + record.name + ":" + record.favorite_color + ":" + record.favorite_number); } inStr.Close(); inStr = new FileStream("users.avro", FileMode.Open); DatumReader <GenericRecord> reader2 = new Avro.Generic.GenericDatumReader <GenericRecord>(avschema, avschema); IFileReader <GenericRecord> gdataFileReader = DataFileReader <GenericRecord> .OpenReader(inStr, avschema); while (gdataFileReader.HasNext()) { GenericRecord grecord = gdataFileReader.Next(); Console.WriteLine("Generic mode of read==>" + grecord["name"] + ":" + grecord["favorite_color"] + ":" + grecord["favorite_number"]); } Console.Write("Hit ENTER to Close:"); Console.ReadLine(); }