public void MoveTo(string subqueue, Message message)
{
AssertNotDisposedOrDisposing();
EnsureEnlistment();
queueStorage.Global(actions =>
{
var queue = actions.GetQueue(message.Queue);
var bookmark = queue.MoveTo(subqueue, (PersistentMessage)message);
actions.RegisterUpdateToReverse(Enlistment.Id,
bookmark, MessageStatus.ReadyToDeliver,
message.SubQueue
);
actions.Commit();
});
if (((PersistentMessage)message).Status == MessageStatus.ReadyToDeliver)
OnMessageReceived(message);
var updatedMessage = new Message
{
Id = message.Id,
Data = message.Data,
Headers = message.Headers,
Queue = message.Queue,
SubQueue = subqueue,
SentAt = message.SentAt
};
OnMessageQueuedForReceive(updatedMessage);
}