public IQueueOutputMessage Send(IMessage messageToSend, IAdditionalMessageData data)
{
try
{
//TODO - temp - fail all messages with routes, as they are not supported yet
if (!string.IsNullOrEmpty(data.Route))
{
throw new NotImplementedException("Redis transport does not yet support routes");
}
//correlationID must be stored as a message header
messageToSend.SetHeader(_headers.CorelationId, new RedisQueueCorrelationIdSerialized((Guid)data.CorrelationId.Id.Value));
var messageId = _sendMessage.Handle(new SendMessageCommand(messageToSend, data));
if (messageId == "JobAlreadyExists")
{
return new QueueOutputMessage(_sentMessageFactory.Create(null, data.CorrelationId), new DotNetWorkQueueException("Failed to enqueue a record. The job already exists"));
}
return new QueueOutputMessage(_sentMessageFactory.Create(new RedisQueueId(messageId), data.CorrelationId));
}
catch (Exception exception)
{
return new QueueOutputMessage(_sentMessageFactory.Create(null, data.CorrelationId), exception);
}
}