public static CreateMessagesToSend ( RedisHeaders redisHeaders, IAdditionalMessageData>.IReadOnlyCollection |
||
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 |
/// <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); } }
/// <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); } }