Lightbus adalah implementasi sederhana untuk mengirim pesan asinkron satu atau dengan pengembalian aplikasi .net.
Perpustakaan tersedia melalui Paket Nuget:
Install-Package LightBus.Core
Install-Package LightBus.Microsoft.DependencyInjectiondotnet add package LightBus.Core
dotnet add package LightBus.Microsoft.DependencyInjectionJika Anda menggunakan ASP.NET Core, cukup instal lightbus.microsoft.dependencyInjection, paket ini memungkinkan Anda untuk secara otomatis mendaftarkan penangan pesan, cukup menggunakan Sintax di bawah ini.
public void ConfigureServices ( IServiceCollection services )
{
.. .
services . AddLightBus ( ) ;
.. .
} Untuk membuat pesan sangat sederhana, Anda hanya perlu kelas dan mengimplementasikan antarmuka IMessage seperti di bawah ini
public class SampleMessage : IMessage
{
public string Value { get ; set ; }
} Seperti pesan, Anda hanya perlu kelas dan mengimplementasikan: IMessageHandler<TMessage> where TMessage: IMessage seperti di bawah ini
public class SampleMessageHandler : IMessageHandler < SampleMessage >
{
public Task HandleAsync ( SampleMessage message )
{
Debug . WriteLine ( message . Value ) ;
return Task . CompletedTask ;
}
} Untuk memicu pesan, Anda perlu menyuntikkan antarmuka ILightBus dan menggunakan PushAsync<TMessage>(TMessage) untuk mengirim pesan seperti di bawah ini
[ 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" ;
}
} Untuk membuat pesan sangat sederhana, Anda hanya perlu kelas dan mengimplementasikan antarmuka IMessage<out Response> seperti di bawah ini
public class SampleMessageResponse : IMessage < string >
{
public string Value { get ; set ; }
} Seperti pesan, Anda hanya perlu kelas dan mengimplementasikan: IMessageHandler<TMessage, TResponse> where TMessage: IMessage<TResponse> Antarmuka seperti di bawah ini
public class SampleMessageHandler : IMessageHandler < SampleMessageResponse , string >
{
public Task < string > HandleAsync ( SampleMessageResponse message )
{
return Task . FromResult ( $ "Hello { message . Value } " ) ;
}
} Untuk memicu pesan, Anda perlu menyuntikkan antarmuka ILightBus dan menggunakan Task<TResponse> SendAsync<TMessage, TResponse>(Action<TMessage> messageHandler = null)
[ 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" ) ;
}
}