Esempio n. 1
0
        public async Task SubscribeAsync(string topicName, CancellationToken stoppingToken)
        {
            using (var consumer = new Consumer(_configConsummer))
            {
                //consumer.OnError += (_, error)=>
                //    => _logger.LogError($"Error: {error}");

                //consumer.OnConsumeError += (_, error)
                //    => _logger.LogError($"Consume error: {error}");

                consumer.OnPartitionsAssigned += (_, partitions)
                                                 => consumer.Assign(partitions);

                consumer.OnPartitionsRevoked += (_, partitions)
                                                => consumer.Unassign();

                consumer.Subscribe(topicName);

                while (!stoppingToken.IsCancellationRequested)
                {
                    if (consumer.Consume(out var response, TimeSpan.FromMilliseconds(10)))
                    {
                        try
                        {
                            IncomeMessage?.Invoke(response.Value);
                            await consumer.CommitAsync(response);
                        }
                        catch (Exception e)
                        {
                            ErrorProcessMessage?.Invoke(e);
                        }
                    }
                }
            }
        }
 internal void CallErrorProcessMessage(Exception error)
 {
     ErrorProcessMessage?.Invoke(error);
 }