LightBus ist eine einfache Implementierung zum Senden von asynchronen Nachrichten an eine Wege oder mit Rückgabe für .NET -Anwendungen.
Die Bibliothek ist über Nuget -Pakete erhältlich:
Install-Package LightBus.Core
Install-Package LightBus.Microsoft.DependencyInjectiondotnet add package LightBus.Core
dotnet add package LightBus.Microsoft.DependencyInjectionWenn Sie ASP.NET Core verwenden, installieren Sie einfach lightbus.microsoft.DependencyInjection. Mit diesem Paket können Sie den Nachrichtenhandler automatisch registrieren, indem Sie nur die unten stehende Sintax verwenden.
public void ConfigureServices ( IServiceCollection services )
{
.. .
services . AddLightBus ( ) ;
.. .
} Um eine Nachricht zu erstellen, ist sehr einfach, Sie benötigen nur eine Klasse und implementieren IMessage -Schnittstellen wie unten
public class SampleMessage : IMessage
{
public string Value { get ; set ; }
} Wie eine Nachricht benötigen Sie nur eine Klasse und implementiert: IMessageHandler<TMessage> where TMessage: IMessage -Schnittstelle wie unten wie unten
public class SampleMessageHandler : IMessageHandler < SampleMessage >
{
public Task HandleAsync ( SampleMessage message )
{
Debug . WriteLine ( message . Value ) ;
return Task . CompletedTask ;
}
} Um ILightBus PushAsync<TMessage>(TMessage) auszulösen
[ Route ( "" ) ]
public class ValuesController : Controller
{
private readonly ILightBus _lightBus ;
public ValuesController ( ILightBus lightBus )
{
_lightBus = lightBus ;
}
[ HttpGet ]
public async Task < string > Get ( )
{
await _lightBus . PushAsync (
new SampleMessage { Value = "Hello LightBus" } ) ;
return "Ok" ;
}
} Um eine Nachricht zu erstellen ist sehr einfach, benötigen Sie nur eine Klasse und implementieren IMessage<out Response> Schnittstelle wie unten
public class SampleMessageResponse : IMessage < string >
{
public string Value { get ; set ; }
} Wie eine Nachricht benötigen Sie nur eine Klasse und implementiert: IMessageHandler<TMessage, TResponse> where TMessage: IMessage<TResponse> Schnittstelle wie unten wie unten
public class SampleMessageHandler : IMessageHandler < SampleMessageResponse , string >
{
public Task < string > HandleAsync ( SampleMessageResponse message )
{
return Task . FromResult ( $ "Hello { message . Value } " ) ;
}
} Um ILightBus Task<TResponse> SendAsync<TMessage, TResponse>(Action<TMessage> messageHandler = null) auszulösen
[ Route ( "" ) ]
public class ValuesController : Controller
{
private readonly ILightBus _lightBus ;
public ValuesController ( ILightBus lightBus )
{
_lightBus = lightBus ;
}
[ HttpGet ]
public async Task < string > Get ( )
{
await _lightBus . SendAsync < SampleMessageResponse , string > ( msg => msg . Value = "LightBus" ) ;
}
}