diff --git a/src/core/Elsa.Abstractions/Services/ICommandSender.cs b/src/core/Elsa.Abstractions/Services/ICommandSender.cs index b4560f19f..4ef0dba85 100644 --- a/src/core/Elsa.Abstractions/Services/ICommandSender.cs +++ b/src/core/Elsa.Abstractions/Services/ICommandSender.cs @@ -1,10 +1,12 @@ using System.Collections.Generic; using System.Threading.Tasks; +using NodaTime; namespace Elsa.Services { public interface ICommandSender { Task SendAsync(object message, IDictionary? headers = default); + Task DeferAsync(object message, Duration delay, IDictionary? headers = default); } } \ No newline at end of file diff --git a/src/core/Elsa.Core/Services/CommandSender.cs b/src/core/Elsa.Core/Services/CommandSender.cs index 165828634..2af812d9a 100644 --- a/src/core/Elsa.Core/Services/CommandSender.cs +++ b/src/core/Elsa.Core/Services/CommandSender.cs @@ -1,5 +1,6 @@ using System.Collections.Generic; using System.Threading.Tasks; +using NodaTime; namespace Elsa.Services { @@ -17,5 +18,11 @@ namespace Elsa.Services var bus = await _serviceBusFactory.GetServiceBusAsync(message.GetType(), default); await bus.Send(message, headers); } + + public async Task DeferAsync(object message, Duration delay, IDictionary? headers = default) + { + var bus = await _serviceBusFactory.GetServiceBusAsync(message.GetType(), default); + await bus.Defer(delay.ToTimeSpan(), message, headers); + } } } \ No newline at end of file