diff --git a/src/Wolverine/Runtime/Scheduled/InMemoryScheduledJobProcessor.cs b/src/Wolverine/Runtime/Scheduled/InMemoryScheduledJobProcessor.cs index 081b2b2b3..9bad60490 100644 --- a/src/Wolverine/Runtime/Scheduled/InMemoryScheduledJobProcessor.cs +++ b/src/Wolverine/Runtime/Scheduled/InMemoryScheduledJobProcessor.cs @@ -1,4 +1,4 @@ -using JasperFx.Core; +using JasperFx.Core; using Wolverine.Runtime.WorkerQueues; namespace Wolverine.Runtime.Scheduled; @@ -74,8 +74,15 @@ public InMemoryScheduledJob(InMemoryScheduledJobProcessor parent, Envelope envel Envelope = envelope; _cancellation = new CancellationTokenSource(); - var delayTime = ExecutionTime.Subtract(DateTimeOffset.Now); - _task = Task.Delay(delayTime, _cancellation.Token).ContinueWith(_ => publish(), TaskScheduler.Default); + var delayTime = ExecutionTime.Subtract(DateTimeOffset.UtcNow); + if (delayTime <= TimeSpan.Zero) + { + _task = Task.Run(() => publish()); + } + else + { + _task = Task.Delay(delayTime, _cancellation.Token).ContinueWith(_ => publish(), TaskScheduler.Default); + } ReceivedAt = DateTimeOffset.Now; } diff --git a/src/Wolverine/Runtime/Scheduled/ScheduledSendEnvelopeHandler.cs b/src/Wolverine/Runtime/Scheduled/ScheduledSendEnvelopeHandler.cs index 18e38c9b2..b13402304 100644 --- a/src/Wolverine/Runtime/Scheduled/ScheduledSendEnvelopeHandler.cs +++ b/src/Wolverine/Runtime/Scheduled/ScheduledSendEnvelopeHandler.cs @@ -18,6 +18,8 @@ public override Task HandleAsync(MessageContext context, CancellationToken cance var scheduled = (Envelope)context.Envelope!.Message!; scheduled.Source = context.Runtime.Options.ServiceName; + scheduled.ScheduledTime = null; + scheduled.Status = EnvelopeStatus.Outgoing; return context.ForwardScheduledEnvelopeAsync(scheduled).AsTask(); }