LightBus
1.0.0
Lightbus是一個簡單的實現,用於單方面發送異步消息或以.NET應用程序的返回。
該庫可通過Nuget軟件包獲得:
Install-Package LightBus.Core
Install-Package LightBus.Microsoft.DependencyInjectiondotnet add package LightBus.Core
dotnet add package LightBus.Microsoft.DependencyInjection如果您使用的是ASP.NET Core,只需安裝lightbus.microsoft.ipendendenception,此軟件包使您可以自動註冊消息處理程序,只需使用下面的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" ) ;
}
}