/// <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);
            }
        }
예제 #2
0
        /// <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);
            }
        }