protected override Task ExecuteAsync(CancellationToken stoppingToken) { Task.Run(() => { try { logger.LogInformation("Enter ExecuteAsync"); var config = GetConsumerConfig(); var schemaRegistryConfig = GetSchemaRegistryConfig(); using (var schemaRegistry = new CachedSchemaRegistryClient(schemaRegistryConfig)) using (var consumer = new ConsumerBuilder <string, Kadaster.KadastraalOnroerendeZaakEvent>(config) .SetValueDeserializer(new Confluent.SchemaRegistry.Serdes.AvroDeserializer <Kadaster.KadastraalOnroerendeZaakEvent>(schemaRegistry).AsSyncOverAsync()) .Build()) { consumer.Subscribe("kadastraalonroerendezaken"); logger.LogInformation("Subscribed to topic kadastraalonroerendezaken"); while (!stoppingToken.IsCancellationRequested) { var result = consumer.Consume(); if (result?.Message?.Value?.NieuweToestand != null) { var kozTpo = new KozTpo { KozId = result.Message.Value.NieuweToestand.Id, Topic = result.Topic, Partition = result.Partition.Value, Offset = result.Offset, CreationTime = result.Message.Timestamp.UtcDateTime.ToLocalTime() }; using (var scope = serviceProvider.CreateScope()) { var repository = scope.ServiceProvider.GetRequiredService <IKozTpoRepository>(); var success = repository.Add(kozTpo).Result; logger.LogInformation($"Kafka => KozTpo: {kozTpo.SerializeToJson()}: {success}"); } } } logger.LogInformation("Background consuming cancelled"); consumer.Close(); } } catch (Exception ex) { logger.LogError(ex, "Exception thrown in BackgroundConsumer.ExecuteAsync"); } }); return(Task.CompletedTask); }
public async Task <bool> Add(KozTpo kozTpo) { context.Add(kozTpo); return(await context.SaveChangesAsync() > 0); }