基于DotNetty封装的JT808DotNetty通用消息业务处理
功能 | 说明 | 使用场景 |
---|---|---|
ISourcePackageDispatcher | 原包分发器(支持热更新、断线重连) | 需要将原数据转给其他平台 |
功能 | 说明 | |
---|---|---|
JT808SessionPublishingRedisImpl | 基于Redis的发布通知 | |
JT808SessionPublishingEmptyImpl | 默认空实现 |
使用场景:有些超长待机的设备,不会实时保持连接,那么通过平台下发的命令是无法到达的,这时候就需要设备一上线,就即时通知服务去处理,然后在即时的下发消息到设备。
只要实现IJT808SessionPublishing接口的任意一款MQ都能实现该功能。
功能 | 说明 | 使用场景 |
---|---|---|
JT808MsgIdHandlerBase | 业务消息处理程序 | 需要自定义实现业务消息处理程序 |
public class JT808MsgIdCustomHandler : JT808MsgIdHandlerBase
{
private readonly ILogger<JT808MsgIdCustomHandler> logger;
public JT808MsgIdCustomHandler(ILoggerFactory loggerFactory,
JT808SessionManager sessionManager) : base(sessionManager)
{
logger = loggerFactory.CreateLogger<JT808MsgIdCustomHandler>();
}
public override JT808Response Msg0x0102(JT808Request request)
{
logger.LogDebug("Msg0x0102");
return base.Msg0x0102(request);
}
}
services.Replace(new ServiceDescriptor(typeof(JT808MsgIdHandlerBase), typeof(JT808MsgIdCustomHandler), ServiceLifetime.Singleton));
UseJT808Host()
// 默认网关端口:808
// 默认webapi端口:828
static async Task Main(string[] args)
{
var serverHostBuilder = new HostBuilder()
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.SetBasePath(AppDomain.CurrentDomain.BaseDirectory);
config.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true);
})
.ConfigureLogging((context, logging) =>
{
logging.AddConsole();
logging.SetMinimumLevel(LogLevel.Error);
})
.ConfigureServices((hostContext, services) =>
{
services.AddSingleton<ILoggerFactory, LoggerFactory>();
services.AddSingleton(typeof(ILogger<>), typeof(Logger<>));
services.Replace(new ServiceDescriptor(typeof(JT808MsgIdHandlerBase), typeof(JT808MsgIdCustomHandler), ServiceLifetime.Singleton));
})
.UseJT808Host();
await serverHostBuilder.RunConsoleAsync();
}