public async Task HandleMessageAsync(IMessageContext messageContext)
        {
            if (messageContext == null)
            {
                throw new ArgumentNullException(nameof(messageContext));
            }

            var message = messageContext.Message;

            try
            {
                var httpContent = new StringContent(message.Content, Encoding.UTF8, options.MessageContentType);
                var postToUrl   = options.PostToUrl.Merge(message.Attributes);

                httpClient.DefaultRequestHeaders.Clear();

                foreach (var headerKey in requestHeaders.Keys)
                {
                    httpClient.DefaultRequestHeaders.Add(headerKey, requestHeaders[headerKey].Merge(message.Attributes));
                }

                var httpResponse = await httpClient.PostAsync(postToUrl, httpContent);

                await(httpResponse.IsSuccessStatusCode ? messageContext.CompleteAsync() : messageContext.AbandonAsync());
            }
            catch
            {
                await messageContext.AbandonAsync();
            }
        }