DelayedEvents.Abstractions
1.1.0
See the version list below for details.
dotnet add package DelayedEvents.Abstractions --version 1.1.0
NuGet\Install-Package DelayedEvents.Abstractions -Version 1.1.0
<PackageReference Include="DelayedEvents.Abstractions" Version="1.1.0" />
paket add DelayedEvents.Abstractions --version 1.1.0
#r "nuget: DelayedEvents.Abstractions, 1.1.0"
// Install DelayedEvents.Abstractions as a Cake Addin #addin nuget:?package=DelayedEvents.Abstractions&version=1.1.0 // Install DelayedEvents.Abstractions as a Cake Tool #tool nuget:?package=DelayedEvents.Abstractions&version=1.1.0
DelayedEvents
DelayedEvents is a library that provides a simple way to implement delayed message. For example: you can use it to implement when order is not paid in 15 minutes, cancel the order.
Nuget packages
Name | Version | Downloads |
---|---|---|
DelayedEvents.Abstractions | ||
DelayedEvents.RabbitMq |
Installation
Add following nuget reference in business project:
PM> Install-Package DelayedEvents.Abstractions
And add following nuget reference in integration project:
PM> Install-Package DelayedEvents.RabbitMq
Make sure the plugins rabbitmq_delayed_message_exchange are enabled. https://blog.rabbitmq.com/posts/2015/04/scheduling-messages-with-rabbitmq/
How to use
First of all, you need to create a class that derived from the DelayedEvent
class.
public class OrderPaymentCheckDelayedEvent : DelayedEvent
{
public OrderPaymentCheckDelayedEvent(Guid orderId)
{
OrderId = orderId;
DelayInSec = 15 * 60; // Make 15 minutes delay
}
public Guid OrderId { get; }
}
Then, you need to create a class that derived from the DelayedEventHandler
class.
public class OrderPaymentCheckDelayedEventHandler : DelayedEventHandler<OrderPaymentCheckDelayedEvent>
{
private readonly IOrderService _orderService;
public OrderPaymentCheckDelayedEventHandler(IOrderService orderService)
{
_orderService = orderService;
}
public override async Task Handle(OrderPaymentCheckDelayedEvent e)
{
// We will cancel the order if it is not paid in 15 minutes
await _orderService.CancelOrderIfNotPaidAsync(e.OrderId);
}
}
Finally, you need to register the DelayedEventHandler
in the Startup.cs
file.
public void ConfigureServices(IServiceCollection services)
{
services.AddDelayedEvents()
.AddRabbitMq(options =>
{
options.HostName = "localhost";
options.UserName = "guest";
options.Password = "guest";
})
.AddDelayedEventHandler<OrderPaymentCheckDelayedEventHandler>();
}
Ok! Now you can publish the DelayedEvent
class in the business project.
public class OrderService : IOrderService
{
private readonly IDelayedEventPublisher _delayedEventPublisher;
public OrderService(IDelayedEventPublisher delayedEventPublisher)
{
_delayedEventPublisher = delayedEventPublisher;
}
public async Task CreateOrderAsync(Order order)
{
// Create order
// Publish the delayed event
await _delayedEventPublisher.PublishAsync(new OrderPaymentCheckDelayedEvent(order.Id));
}
}
Final
Leave a comment on GitHub if you have any questions or suggestions.
Turn on the star if you like this project.
License
This project is licensed under the MIT License
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on DelayedEvents.Abstractions:
Package | Downloads |
---|---|
DelayedEvents.RabbitMq
Delayed event bus for some delayed hanlding business |
GitHub repositories
This package is not used by any popular GitHub repositories.