示例#1
0
        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);
        }
示例#2
0
        public async Task <bool> Add(KozTpo kozTpo)
        {
            context.Add(kozTpo);

            return(await context.SaveChangesAsync() > 0);
        }