public void Rollback(IMessageContext context)
{
if (context.MessageId == null || !context.MessageId.HasValue) return;
//there is nothing to rollback unless at least one of these options is enabled
if (_configuration.Options().EnableDelayedProcessing ||
_configuration.Options().EnableHeartBeat ||
_configuration.Options().EnableStatus)
{
DateTime? lastHeartBeat = null;
if (context.WorkerNotification?.HeartBeat?.Status?.LastHeartBeatTime != null)
{
lastHeartBeat = context.WorkerNotification.HeartBeat.Status.LastHeartBeatTime.Value;
}
var increaseDelay = context.Get(_headers.IncreaseQueueDelay).IncreaseDelay;
_rollbackCommand.Handle(new RollbackMessageCommand(lastHeartBeat,
(long)context.MessageId.Id.Value, increaseDelay));
}
}
}