public static void AddMessageProperties(this IBasicProperties basicProperties,
     IPublisherMessage publisherMessage)
 {
     basicProperties.ContentType = MediaTypeNames.Application.Json;
     basicProperties.CorrelationId = publisherMessage.CorrelationId;
     basicProperties.Headers = publisherMessage.GetHeaders();
 }
        public async Task PublishAsync(IPublisherMessage publisherMessage, CancellationToken cancellationToken)
        {
            if (publisherMessage is null)
            {
                throw new ArgumentNullException(nameof(publisherMessage));
            }
            var batching = NewBatching(publisherMessage);

            await PublishAsync(batching, cancellationToken);
        }
        internal static bool Add(this IBasicPublishBatch batch, IModel model, IPublisherMessage publisherMessage)
        {
            if (publisherMessage.CancellationToken.IsCancellationRequested)
            {
                return(false);
            }

            publisherMessage.Routing.Verify(model);

            publisherMessage.MarkAsPublished();

            var basicProperties = model.CreateBasicProperties();

            basicProperties.AddMessageProperties(publisherMessage);

            batch.Add(publisherMessage.Routing.ExchangeName, publisherMessage.Routing.RoutingKey, false,
                      basicProperties,
                      publisherMessage.Serialize());

            return(true);
        }