Lightbus는 Oneway 또는 .NET 애플리케이션에 대한 반환이있는 비동기 메시지를 전송하기위한 간단한 구현입니다.
라이브러리는 Nuget 패키지를 통해 제공됩니다.
Install-Package LightBus.Core
Install-Package LightBus.Microsoft.DependencyInjectiondotnet add package LightBus.Core
dotnet add package LightBus.Microsoft.DependencyInjectionASP.NET Core를 사용하는 경우 Lightbus.microsoft.dependencyInjection을 설치하면이 패키지를 사용하면 아래 SINTAX를 사용하여 메시지 처리기를 자동으로 등록 할 수 있습니다.
public void ConfigureServices ( IServiceCollection services )
{
.. .
services . AddLightBus ( ) ;
.. .
} 메시지를 만들려면 매우 간단합니다. 클래스 만 있으면 아래와 같이 IMessage 인터페이스를 구현합니다.
public class SampleMessage : IMessage
{
public string Value { get ; set ; }
} 메시지처럼 클래스가 필요하고 구현이 필요합니다. IMessageHandler<TMessage> where TMessage: IMessage 인터페이스
public class SampleMessageHandler : IMessageHandler < SampleMessage >
{
public Task HandleAsync ( SampleMessage message )
{
Debug . WriteLine ( message . Value ) ;
return Task . CompletedTask ;
}
} 메시지를 트리거하려면 ILightBus 인터페이스를 주입하고 PushAsync<TMessage>(TMessage) 사용하여 아래와 같은 메시지를 발송해야합니다.
[ 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" ;
}
} 메시지를 만들려면 매우 간단합니다. 클래스 만 있으면 아래와 같이 IMessage<out Response> 인터페이스를 구현합니다.
public class SampleMessageResponse : IMessage < string >
{
public string Value { get ; set ; }
} 메시지와 마찬가지로 클래스가 필요하고 IMessageHandler<TMessage, TResponse> where TMessage: IMessage<TResponse> 인터페이스 아래와 같은 인터페이스
public class SampleMessageHandler : IMessageHandler < SampleMessageResponse , string >
{
public Task < string > HandleAsync ( SampleMessageResponse message )
{
return Task . FromResult ( $ "Hello { message . Value } " ) ;
}
} 메시지를 트리거하려면 ILightBus 인터페이스를 주입하고 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" ) ;
}
}