CreateMessagesToSend() public static method

Creates the messages to send.
public static CreateMessagesToSend ( RedisHeaders redisHeaders, IAdditionalMessageData>.IReadOnlyCollection messages, byte meta, IUnixTimeFactory unixTimeFactory, IGetMessageIdFactory messageIdFactory, ICompositeSerialization serializer ) : List
redisHeaders RedisHeaders The redis headers.
messages IAdditionalMessageData>.IReadOnlyCollection The messages.
meta byte The meta data, already serialized.
unixTimeFactory IUnixTimeFactory The unix time factory.
messageIdFactory IGetMessageIdFactory The message identifier factory.
serializer ICompositeSerialization The composite serializer.
return List
Ejemplo n.º 1
0
        /// <summary>
        /// Sends the messages.
        /// </summary>
        /// <param name="messages">The messages.</param>
        /// <param name="meta">The meta.</param>
        /// <returns></returns>
        /// <exception cref="DotNetWorkQueueException"></exception>
        private IEnumerable <QueueOutputMessage> SendMessages(
            IReadOnlyCollection <QueueMessage <IMessage, IAdditionalMessageData> > messages, byte[] meta)
        {
            var messagesToSend = BatchMessageShared.CreateMessagesToSend(_redisHeaders, messages, meta,
                                                                         _unixTimeFactory, _messageIdFactory, _serializer);

            try
            {
                var result = _enqueue.Execute(messagesToSend);
                if (result != null)
                {
                    return(BatchMessageShared.ProcessSentMessages(result, messages.Count, _sentMessageFactory));
                }
                throw new DotNetWorkQueueException("Returned no data when enqueue messages");
            }
            catch (Exception error)
            {
                var output = new List <QueueOutputMessage>(messages.Count);
                output.AddRange(
                    messages.Select(
                        message =>
                        new QueueOutputMessage(_sentMessageFactory.Create(null, message.MessageData.CorrelationId),
                                               error)));
                return(output);
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Sends the messages.
        /// </summary>
        /// <param name="messages">The messages.</param>
        /// <param name="meta">The meta.</param>
        /// <returns></returns>
        private async Task <IEnumerable <QueueOutputMessage> > SendMessagesAsync(IReadOnlyCollection <QueueMessage <IMessage, IAdditionalMessageData> > messages, byte[] meta)
        {
            var messagesToSend = BatchMessageShared.CreateMessagesToSend(_redisHeaders, messages, meta,
                                                                         _unixTimeFactory, _messageIdFactory, _serializer);

            try
            {
                var result = await _enqueue.ExecuteAsync(messagesToSend).ConfigureAwait(false);

                return(BatchMessageShared.ProcessSentMessages(result, messages.Count, _sentMessageFactory));
            }
            catch (Exception error)
            {
                var output = new List <QueueOutputMessage>(messages.Count);
                output.AddRange(messages.Select(message => new QueueOutputMessage(_sentMessageFactory.Create(null, message.MessageData.CorrelationId), error)));
                return(output);
            }
        }