protected override Task ExecuteAsync(CancellationToken stoppingToken) { return(Task.Run(() => { using var consumer = new ConsumerBuilder <int, byte[]>(_kafkaConfig) .Build(); try { consumer.Subscribe("results"); while (!stoppingToken.IsCancellationRequested) { try { var consumeResult = consumer.Consume(stoppingToken); try { //_calculationDataFlow.ProcessMessage(consumeResult.Message.Value); var deserializedMessage = MessagePackSerializer.Deserialize <CalculationPack>(consumeResult.Message.Value); ResultData._result.Enqueue(deserializedMessage); _resultsRepository.Save(deserializedMessage); _logger.LogInformation(consumeResult.Message.Key.ToString()); } catch (Exception ex) { _logger.LogError(ex, "Kafka consume message error: {0}", ex.Message); } if (consumeResult.IsPartitionEOF) { break; } } catch (ConsumeException e) { _logger.LogError(e, $"Consumer for topic '{e.ConsumerRecord.Topic}'. ConsumeException, Key: {e.Error}"); } catch (Exception ex) { _logger.LogError(ex, "Kafka consume message error: {0}", ex.Message); } } } catch (OperationCanceledException e) { _logger.LogError(e, $"Consumer for topics data: {e.Message}"); } catch (Exception ex) { _logger.LogError(ex, $"Consumer for topics '{string.Join(';', "data")}'. Exception."); } }, stoppingToken)); }
public async Task <IActionResult> GetAsync(string left, string right, string operation) { var responce = new Dictionary <string, string>(); try { var result = _calculator.Calculate(left, right, operation); var id = await _resultsRepository.Save(result); _logger.LogInformation($"Result: {result}, Id: {id}"); responce.Add("result", result); responce.Add("id", id); return(new JsonResult(responce)); } catch (Exception e) { _logger.LogError(e, $"Error: {e.Message}"); responce.Add("error", e.Message); return(new JsonResult(responce)); } }