/// <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); } }