private void EndpointObserverMessageReceived(TransportMessage transportMessage, ITransportEndpointObserver transportEndpointObserver)
{
try
{
// Translate to Transport message
var serviceBusMessage = transportEndpointObserver.Transport.TranslateToServiceBusMessage(transportMessage);
// Ignore transport messages without messages
if (serviceBusMessage.Messages == null && serviceBusMessage.Messages.Length < 1)
return;
// Dispatch each message (synchronously)
foreach (var message in serviceBusMessage.Messages)
{
_dispatcher.Dispatch(message);
}
}
catch (DispatchingException dispatchingException)
{
_lastException = dispatchingException;
_log.ErrorException("Dispatching exception. See logs for more details.", dispatchingException);
_errorTransportEndpoint.Send(transportMessage);
}
catch (HandlerException handlerException)
{
_lastException = handlerException;
_log.ErrorException("Message handling failed.", handlerException);
_errorTransportEndpoint.Send(transportMessage);
}
catch (TransportMessageDeserializationException deserializationException)
{
_lastException = deserializationException;
_log.ErrorException("Unable to deserialize message #" + transportMessage.MessageId, deserializationException);
_errorTransportEndpoint.Send(transportMessage);
}
}