/// <summary> /// Deserializes and invokes the handlers. /// </summary> /// <param name="serializedMessage"></param> /// <param name="log"></param> /// <returns></returns> public async Task HandleAsync(string serializedMessage, TraceWriter log) { var deserializedMessageWrapper = serializer.Deserialize(serializedMessage, typeof(AFBusMessageEnvelope)) as AFBusMessageEnvelope; string messageBody = deserializedMessageWrapper.Body; if (deserializedMessageWrapper.Context.BodyInFile) { messageBody = await messageSender.ReadMessageBodyFromFileAsync(messageBody).ConfigureAwait(false); } var deserializedMessage = serializer.Deserialize(messageBody, Type.GetType(deserializedMessageWrapper.Context.BodyType)); await HandleAsync(deserializedMessage, deserializedMessageWrapper.Context, log).ConfigureAwait(false); if (deserializedMessageWrapper.Context.BodyInFile) { await messageSender.DeleteFileWithMessageBodyAsync(deserializedMessageWrapper.Body).ConfigureAwait(false); } }
/// <summary> /// Deserializes and invokes the handlers. /// </summary> /// <param name="serializedMessage"></param> /// <param name="log"></param> /// <returns></returns> public async Task HandleAsync(string serializedMessage, ILogger log) { var deserializedMessageWrapper = serializer.Deserialize(serializedMessage, typeof(AFBusMessageEnvelope)) as AFBusMessageEnvelope; string messageBody = deserializedMessageWrapper.Body; if (deserializedMessageWrapper.Context.BodyInFile) { try { messageBody = await messageSender.ReadMessageBodyFromFileAsync(messageBody).ConfigureAwait(false); } catch (StorageException ex) { if (ex.Message.Contains("The specified blob does not exist")) { log?.LogWarning("message ignored because file " + messageBody + " has not been found"); return; } else { throw; } } } var deserializedMessage = serializer.Deserialize(messageBody, Type.GetType(deserializedMessageWrapper.Context.BodyType)); deserializedMessageWrapper.Context.ActualServiceName = serviceName; await HandleAsync(deserializedMessage, deserializedMessageWrapper.Context, log).ConfigureAwait(false); if (deserializedMessageWrapper.Context.BodyInFile) { await messageSender.DeleteFileWithMessageBodyAsync(deserializedMessageWrapper.Body).ConfigureAwait(false); } }