Exemplo n.º 1
0
 private void Handle(object sender, BasicDeliverEventArgs e)
 {
     try
     {
         _logger.LogInformation("WordCounter.Worker: got message");
         var bytes         = e.Body;
         var msg           = JsonConvert.DeserializeObject <BusinessMessage>(Encoding.UTF8.GetString(bytes));
         var _processor    = new WordCounterProcessor();
         var processResult = _processor.Process(msg);
         if (processResult.Status == OperationStatus.Success)
         {
             _wordCountersRepository.Create(new CountResultRow()
             {
                 CorrelationId = msg.CorrelationId, WordCount = processResult.Data.WordCount
             });
             var addToIndexInBackground = new Task(
                 () => {
                 _elasticClient.IndexDocument <BusinessMessage>(msg);
             })
                                          .ContinueWith(finished => _logger.LogError(finished.Exception?.Message), TaskContinuationOptions.OnlyOnFaulted);
             addToIndexInBackground.Start();
         }
         else
         {
             var errors = string.Join(';', processResult.Errors);
             _logger.LogError($"msg {msg.CorrelationId} was not processed: {errors}");
             // send another message to queue
         }
     }
     catch (Exception ex)
     {
         _logger.LogError($"Unexpected error during message processing: {ex.Message}");
         throw;
     }
 }
Exemplo n.º 2
0
 public int CreateResult(CountResultRow row)
 {
     WaitForDb();
     return(_wordCountersRepository.Create(row));
 }