public Task OnMessage(Message theMessage) { Task returnTask; try { SyntheticMessageProcessor processor = new SyntheticMessageProcessor(_connectionString, _monitoringTopic, _logger); Task messageTask = processor.OnMessage(theMessage); returnTask = Task.WhenAll(new Task[] { messageTask }); } catch (MonitoringException mex) { _logger.LogError($"ERROR - {mex.Message} {mex.StackTrace}"); returnTask = Task.FromException(mex); } catch (Exception ex) { _logger.LogWarning($"Error scenario found in monitored service - {ex.Message}"); string dataJSON = Encoding.UTF8.GetString(theMessage.Body); MonitorMessage errorMessage = JsonConvert.DeserializeObject <MonitorMessage>(dataJSON); errorMessage.AssociatedId = $"{errorMessage.AssociatedId}_DLQ"; if (ts is null) { ts = new SessionlessTopicSender(_connectionString, _monitoringTopic); } Task sendTask = ts.Send(JsonConvert.SerializeObject(errorMessage), theMessage.UserProperties["CollectionId"].ToString(), theMessage.UserProperties["Context"].ToString(), DateTime.MinValue, "SYNTHETIC_ERROR"); returnTask = Task.WhenAll(new Task[] { sendTask }); } return(returnTask); }
public override Task ProcessMessagesWhenLastReceived(IList <string> listOfOriginalMessagesAsUTF8, Message lastMessage, IList <string> listOfProcessedMessagesAsUTF8) { Task returnTask; try { Task sendTask = ts.Send(listOfProcessedMessagesAsUTF8, lastMessage.UserProperties["CollectionId"].ToString(), lastMessage.UserProperties["Context"].ToString(), DateTime.MinValue, "LAST_SYNTHETIC_MESSAGE_PUBLISHED"); returnTask = Task.WhenAll(new Task[] { sendTask }); } catch (Exception ex) { MonitoringException exp = new MonitoringException($"ERROR in synthetic monitoring service - unable to process group of synthetic messages caused by {ex.Message}"); _logger.LogError($"Failed to process group of synthetic messages - {ex.Message} {ex.StackTrace}"); throw exp; } return(returnTask); }