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
コード例 #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);
            }
        }
コード例 #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);
            }
        }