Przeglądaj źródła

1.修复netty和pipeline服务重新启动时候没有优雅的释放导致日志显示报错问题

2.升级相应引用库
tags/v2.3.2
SmallChi(Koike) 5 lat temu
rodzic
commit
72acdaedf9
32 zmienionych plików z 368 dodań i 142 usunięć
  1. +4
    -4
      simples/JT808.DotNetty.SimpleClient/JT808.DotNetty.SimpleClient.csproj
  2. +4
    -4
      simples/JT808.DotNetty.SimpleServer/JT808.DotNetty.SimpleServer.csproj
  3. +4
    -4
      simples/JT808.Gateway.SimpleClient/JT808.Gateway.SimpleClient.csproj
  4. +4
    -4
      simples/JT808.Gateway.SimpleQueueServer/JT808.Gateway.SimpleQueueServer.csproj
  5. +4
    -4
      simples/JT808.Gateway.SimpleQueueService/JT808.Gateway.SimpleQueueService.csproj
  6. +4
    -4
      simples/JT808.Gateway.SimpleServer/JT808.Gateway.SimpleServer.csproj
  7. +1
    -1
      simples/JT808.Simples.sln
  8. +26
    -8
      src/JT808.DotNetty.Kafka/JT808MsgConsumer.cs
  9. +23
    -6
      src/JT808.DotNetty.Kafka/JT808MsgProducer.cs
  10. +26
    -5
      src/JT808.DotNetty.Kafka/JT808MsgReplyConsumer.cs
  11. +24
    -6
      src/JT808.DotNetty.Kafka/JT808MsgReplyProducer.cs
  12. +26
    -5
      src/JT808.DotNetty.Kafka/JT808SessionConsumer.cs
  13. +24
    -6
      src/JT808.DotNetty.Kafka/JT808SessionProducer.cs
  14. +4
    -4
      src/JT808.Gateway.Abstractions/JT808.Gateway.Abstractions.csproj
  15. +6
    -6
      src/JT808.Gateway.Benchmark/JT808.Gateway.CleintBenchmark/JT808.Gateway.CleintBenchmark.csproj
  16. +4
    -4
      src/JT808.Gateway.Benchmark/JT808.Gateway.ServerBenchmark/JT808.Gateway.ServerBenchmark.csproj
  17. +6
    -6
      src/JT808.Gateway.Client/JT808.Gateway.Client.csproj
  18. +6
    -6
      src/JT808.Gateway.Kafka/JT808.Gateway.Kafka.csproj
  19. +26
    -8
      src/JT808.Gateway.Kafka/JT808MsgConsumer.cs
  20. +23
    -6
      src/JT808.Gateway.Kafka/JT808MsgProducer.cs
  21. +26
    -5
      src/JT808.Gateway.Kafka/JT808MsgReplyConsumer.cs
  22. +24
    -6
      src/JT808.Gateway.Kafka/JT808MsgReplyProducer.cs
  23. +26
    -5
      src/JT808.Gateway.Kafka/JT808SessionConsumer.cs
  24. +24
    -6
      src/JT808.Gateway.Kafka/JT808SessionProducer.cs
  25. +1
    -1
      src/JT808.Gateway.Services/JT808.Gateway.MsgLogging/JT808.Gateway.MsgLogging.csproj
  26. +1
    -1
      src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808.Gateway.ReplyMessage.csproj
  27. +1
    -1
      src/JT808.Gateway.Services/JT808.Gateway.SessionNotice/JT808.Gateway.SessionNotice.csproj
  28. +1
    -1
      src/JT808.Gateway.Services/JT808.Gateway.Transmit/JT808.Gateway.Transmit.csproj
  29. +4
    -4
      src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/JT808.Gateway.NormalHosting.csproj
  30. +4
    -4
      src/JT808.Gateway.Tests/JT808.Gateway.QueueHosting/JT808.Gateway.QueueHosting.csproj
  31. +4
    -4
      src/JT808.Gateway.Tests/JT808.Gateway.Test/JT808.Gateway.Test.csproj
  32. +3
    -3
      src/JT808.Gateway/JT808.Gateway.csproj

+ 4
- 4
simples/JT808.DotNetty.SimpleClient/JT808.DotNetty.SimpleClient.csproj Wyświetl plik

@@ -7,10 +7,10 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="JT808.DotNetty.Client" Version="2.3.1" /> <PackageReference Include="JT808.DotNetty.Client" Version="2.3.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.3" />
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" /> <PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" />
</ItemGroup> </ItemGroup>




+ 4
- 4
simples/JT808.DotNetty.SimpleServer/JT808.DotNetty.SimpleServer.csproj Wyświetl plik

@@ -7,10 +7,10 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="JT808.DotNetty.Tcp" Version="2.3.1" /> <PackageReference Include="JT808.DotNetty.Tcp" Version="2.3.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.3" />
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" /> <PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>


+ 4
- 4
simples/JT808.Gateway.SimpleClient/JT808.Gateway.SimpleClient.csproj Wyświetl plik

@@ -8,10 +8,10 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="JT808.Gateway.Abstractions" Version="1.0.0" /> <PackageReference Include="JT808.Gateway.Abstractions" Version="1.0.0" />
<PackageReference Include="JT808.Gateway.Client" Version="1.0.0" /> <PackageReference Include="JT808.Gateway.Client" Version="1.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.3" />
<PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" /> <PackageReference Include="WebApiClient.Extensions.DependencyInjection" Version="2.0.3" />
</ItemGroup> </ItemGroup>
</Project> </Project>

+ 4
- 4
simples/JT808.Gateway.SimpleQueueServer/JT808.Gateway.SimpleQueueServer.csproj Wyświetl plik

@@ -8,10 +8,10 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="JT808.Gateway" Version="1.0.0" /> <PackageReference Include="JT808.Gateway" Version="1.0.0" />
<PackageReference Include="JT808.Gateway.Kafka" Version="1.0.0" /> <PackageReference Include="JT808.Gateway.Kafka" Version="1.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>


+ 4
- 4
simples/JT808.Gateway.SimpleQueueService/JT808.Gateway.SimpleQueueService.csproj Wyświetl plik

@@ -14,10 +14,10 @@
<PackageReference Include="JT808.Gateway.SessionNotice" Version="1.0.0" /> <PackageReference Include="JT808.Gateway.SessionNotice" Version="1.0.0" />
<PackageReference Include="JT808.Gateway.Traffic" Version="1.0.0" /> <PackageReference Include="JT808.Gateway.Traffic" Version="1.0.0" />
<PackageReference Include="JT808.Gateway.Transmit" Version="1.0.0" /> <PackageReference Include="JT808.Gateway.Transmit" Version="1.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.3" />
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>


+ 4
- 4
simples/JT808.Gateway.SimpleServer/JT808.Gateway.SimpleServer.csproj Wyświetl plik

@@ -12,10 +12,10 @@
<PackageReference Include="JT808.Gateway.SessionNotice" Version="1.0.0" /> <PackageReference Include="JT808.Gateway.SessionNotice" Version="1.0.0" />
<PackageReference Include="JT808.Gateway.Traffic" Version="1.0.0" /> <PackageReference Include="JT808.Gateway.Traffic" Version="1.0.0" />
<PackageReference Include="JT808.Gateway.Transmit" Version="1.0.0" /> <PackageReference Include="JT808.Gateway.Transmit" Version="1.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="3.1.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Update="appsettings.json"> <None Update="appsettings.json">


+ 1
- 1
simples/JT808.Simples.sln Wyświetl plik

@@ -17,7 +17,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.SimpleQueueSe
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.SimpleQueueService", "JT808.Gateway.SimpleQueueService\JT808.Gateway.SimpleQueueService.csproj", "{E2D1CFEF-417A-4C44-BC2E-E5A160602485}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.SimpleQueueService", "JT808.Gateway.SimpleQueueService\JT808.Gateway.SimpleQueueService.csproj", "{E2D1CFEF-417A-4C44-BC2E-E5A160602485}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "JT808.Gateway.SimpleQueueNotification", "JT808.Gateway.SimpleQueueNotification\JT808.Gateway.SimpleQueueNotification.csproj", "{163D2EE2-9A62-4E8A-B203-BF147909E89A}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "JT808.Gateway.SimpleQueueNotification", "JT808.Gateway.SimpleQueueNotification\JT808.Gateway.SimpleQueueNotification.csproj", "{163D2EE2-9A62-4E8A-B203-BF147909E89A}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution


+ 26
- 8
src/JT808.DotNetty.Kafka/JT808MsgConsumer.cs Wyświetl plik

@@ -10,8 +10,9 @@ using System.Threading.Tasks;


namespace JT808.DotNetty.Kafka namespace JT808.DotNetty.Kafka
{ {
public class JT808MsgConsumer : IJT808MsgConsumer
public sealed class JT808MsgConsumer : IJT808MsgConsumer
{ {
private bool disposed = false;
public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource(); public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource();


private readonly IConsumer<string, byte[]> consumer; private readonly IConsumer<string, byte[]> consumer;
@@ -35,6 +36,7 @@ namespace JT808.DotNetty.Kafka
{ {
while (!Cts.IsCancellationRequested) while (!Cts.IsCancellationRequested)
{ {
if (disposed) return;
try try
{ {
//如果不指定分区,根据kafka的机制会从多个分区中拉取数据 //如果不指定分区,根据kafka的机制会从多个分区中拉取数据
@@ -42,9 +44,9 @@ namespace JT808.DotNetty.Kafka
var data = consumer.Consume(Cts.Token); var data = consumer.Consume(Cts.Token);
if (logger.IsEnabled(LogLevel.Debug)) if (logger.IsEnabled(LogLevel.Debug))
{ {
logger.LogDebug($"Topic: {data.Topic} Key: {data.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
logger.LogDebug($"Topic: {data.Topic} Key: {data.Message.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
} }
callback((data.Key, data.Value));
callback((data.Message.Key, data.Message.Value));
} }
catch (ConsumeException ex) catch (ConsumeException ex)
{ {
@@ -61,21 +63,37 @@ namespace JT808.DotNetty.Kafka
} }
}, Cts.Token); }, Cts.Token);
} }

public void Subscribe() public void Subscribe()
{ {
consumer.Subscribe(TopicName); consumer.Subscribe(TopicName);
} }

public void Unsubscribe() public void Unsubscribe()
{ {
if (disposed) return;
consumer.Unsubscribe(); consumer.Unsubscribe();
Cts.Cancel();
}
private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
consumer.Close();
consumer.Dispose();
Cts.Dispose();
}
disposed = true;
}
~JT808MsgConsumer()
{
Dispose(false);
} }

public void Dispose() public void Dispose()
{ {
consumer.Close();
consumer.Dispose();
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
} }
} }
} }

+ 23
- 6
src/JT808.DotNetty.Kafka/JT808MsgProducer.cs Wyświetl plik

@@ -8,8 +8,9 @@ using System.Threading.Tasks;


namespace JT808.DotNetty.Kafka namespace JT808.DotNetty.Kafka
{ {
public class JT808MsgProducer : IJT808MsgProducer
public sealed class JT808MsgProducer : IJT808MsgProducer
{ {
private bool disposed = false;
public string TopicName { get; } public string TopicName { get; }


private readonly IProducer<string, byte[]> producer; private readonly IProducer<string, byte[]> producer;
@@ -20,18 +21,34 @@ namespace JT808.DotNetty.Kafka
TopicName = producerConfigAccessor.Value.TopicName; TopicName = producerConfigAccessor.Value.TopicName;
} }


public void Dispose()
{
producer.Dispose();
}

public async Task ProduceAsync(string terminalNo, byte[] data) public async Task ProduceAsync(string terminalNo, byte[] data)
{ {
if (disposed) return;
await producer.ProduceAsync(TopicName, new Message<string, byte[]> await producer.ProduceAsync(TopicName, new Message<string, byte[]>
{ {
Key = terminalNo, Key = terminalNo,
Value = data Value = data
}); });
} }
private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
producer.Dispose();
}
disposed = true;
}
~JT808MsgProducer()
{
Dispose(false);
}
public void Dispose()
{
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
}
} }
} }

+ 26
- 5
src/JT808.DotNetty.Kafka/JT808MsgReplyConsumer.cs Wyświetl plik

@@ -10,8 +10,9 @@ using System.Threading.Tasks;


namespace JT808.DotNetty.Kafka namespace JT808.DotNetty.Kafka
{ {
public class JT808MsgReplyConsumer : IJT808MsgReplyConsumer
public sealed class JT808MsgReplyConsumer : IJT808MsgReplyConsumer
{ {
private bool disposed = false;
public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource(); public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource();


private readonly IConsumer<string, byte[]> consumer; private readonly IConsumer<string, byte[]> consumer;
@@ -35,6 +36,7 @@ namespace JT808.DotNetty.Kafka
{ {
while (!Cts.IsCancellationRequested) while (!Cts.IsCancellationRequested)
{ {
if (disposed) return;
try try
{ {
//如果不指定分区,根据kafka的机制会从多个分区中拉取数据 //如果不指定分区,根据kafka的机制会从多个分区中拉取数据
@@ -42,9 +44,9 @@ namespace JT808.DotNetty.Kafka
var data = consumer.Consume(Cts.Token); var data = consumer.Consume(Cts.Token);
if (logger.IsEnabled(LogLevel.Debug)) if (logger.IsEnabled(LogLevel.Debug))
{ {
logger.LogDebug($"Topic: {data.Topic} Key: {data.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
logger.LogDebug($"Topic: {data.Topic} Key: {data.Message.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
} }
callback((data.Key, data.Value));
callback((data.Message.Key, data.Message.Value));
} }
catch (ConsumeException ex) catch (ConsumeException ex)
{ {
@@ -69,13 +71,32 @@ namespace JT808.DotNetty.Kafka


public void Unsubscribe() public void Unsubscribe()
{ {
if (disposed) return;
consumer.Unsubscribe(); consumer.Unsubscribe();
Cts.Cancel();
} }


private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
consumer.Close();
consumer.Dispose();
Cts.Dispose();
}
disposed = true;
}
~JT808MsgReplyConsumer()
{
Dispose(false);
}
public void Dispose() public void Dispose()
{ {
consumer.Close();
consumer.Dispose();
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
} }
} }
} }

+ 24
- 6
src/JT808.DotNetty.Kafka/JT808MsgReplyProducer.cs Wyświetl plik

@@ -8,8 +8,9 @@ using System.Threading.Tasks;


namespace JT808.DotNetty.Kafka namespace JT808.DotNetty.Kafka
{ {
public class JT808MsgReplyProducer : IJT808MsgReplyProducer
public sealed class JT808MsgReplyProducer : IJT808MsgReplyProducer
{ {
private bool disposed = false;
public string TopicName { get;} public string TopicName { get;}


private IProducer<string, byte[]> producer; private IProducer<string, byte[]> producer;
@@ -20,18 +21,35 @@ namespace JT808.DotNetty.Kafka
TopicName = producerConfigAccessor.Value.TopicName; TopicName = producerConfigAccessor.Value.TopicName;
} }


public void Dispose()
{
producer.Dispose();
}

public async Task ProduceAsync(string terminalNo, byte[] data) public async Task ProduceAsync(string terminalNo, byte[] data)
{ {
if (disposed) return;
await producer.ProduceAsync(TopicName, new Message<string, byte[]> await producer.ProduceAsync(TopicName, new Message<string, byte[]>
{ {
Key = terminalNo, Key = terminalNo,
Value = data Value = data
}); });
} }

private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
producer.Dispose();
}
disposed = true;
}
~JT808MsgReplyProducer()
{
Dispose(false);
}
public void Dispose()
{
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
}
} }
} }

+ 26
- 5
src/JT808.DotNetty.Kafka/JT808SessionConsumer.cs Wyświetl plik

@@ -10,8 +10,9 @@ using System.Threading.Tasks;


namespace JT808.DotNetty.Kafka namespace JT808.DotNetty.Kafka
{ {
public class JT808SessionConsumer : IJT808SessionConsumer
public sealed class JT808SessionConsumer : IJT808SessionConsumer
{ {
private bool disposed = false;
public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource(); public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource();


private readonly IConsumer<string, string> consumer; private readonly IConsumer<string, string> consumer;
@@ -35,6 +36,7 @@ namespace JT808.DotNetty.Kafka
{ {
while (!Cts.IsCancellationRequested) while (!Cts.IsCancellationRequested)
{ {
if (disposed) return;
try try
{ {
//如果不指定分区,根据kafka的机制会从多个分区中拉取数据 //如果不指定分区,根据kafka的机制会从多个分区中拉取数据
@@ -42,9 +44,9 @@ namespace JT808.DotNetty.Kafka
var data = consumer.Consume(Cts.Token); var data = consumer.Consume(Cts.Token);
if (logger.IsEnabled(LogLevel.Debug)) if (logger.IsEnabled(LogLevel.Debug))
{ {
logger.LogDebug($"Topic: {data.Topic} Key: {data.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
logger.LogDebug($"Topic: {data.Topic} Key: {data.Message.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
} }
callback((data.Key, data.Value));
callback((data.Message.Key, data.Message.Value));
} }
catch (ConsumeException ex) catch (ConsumeException ex)
{ {
@@ -69,13 +71,32 @@ namespace JT808.DotNetty.Kafka


public void Unsubscribe() public void Unsubscribe()
{ {
if (disposed) return;
consumer.Unsubscribe(); consumer.Unsubscribe();
Cts.Cancel();
} }


private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
consumer.Close();
consumer.Dispose();
Cts.Dispose();
}
disposed = true;
}
~JT808SessionConsumer()
{
Dispose(false);
}
public void Dispose() public void Dispose()
{ {
consumer.Close();
consumer.Dispose();
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
} }
} }
} }

+ 24
- 6
src/JT808.DotNetty.Kafka/JT808SessionProducer.cs Wyświetl plik

@@ -8,8 +8,9 @@ using System.Threading.Tasks;


namespace JT808.DotNetty.Kafka namespace JT808.DotNetty.Kafka
{ {
public class JT808SessionProducer : IJT808SessionProducer
public sealed class JT808SessionProducer : IJT808SessionProducer
{ {
private bool disposed = false;
public string TopicName { get; } public string TopicName { get; }


private readonly IProducer<string, string> producer; private readonly IProducer<string, string> producer;
@@ -20,18 +21,35 @@ namespace JT808.DotNetty.Kafka
TopicName = producerConfigAccessor.Value.TopicName; TopicName = producerConfigAccessor.Value.TopicName;
} }


public void Dispose()
{
producer.Dispose();
}

public async Task ProduceAsync(string notice,string terminalNo) public async Task ProduceAsync(string notice,string terminalNo)
{ {
if (disposed) return;
await producer.ProduceAsync(TopicName, new Message<string, string> await producer.ProduceAsync(TopicName, new Message<string, string>
{ {
Key = notice, Key = notice,
Value = terminalNo Value = terminalNo
}); });
} }

private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
producer.Dispose();
}
disposed = true;
}
~JT808SessionProducer()
{
Dispose(false);
}
public void Dispose()
{
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
}
} }
} }

+ 4
- 4
src/JT808.Gateway.Abstractions/JT808.Gateway.Abstractions.csproj Wyświetl plik

@@ -30,13 +30,13 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Google.Protobuf" Version="3.11.4" /> <PackageReference Include="Google.Protobuf" Version="3.11.4" />
<PackageReference Include="Grpc.Core" Version="2.27.0" />
<PackageReference Include="Grpc.Tools" Version="2.27.0">
<PackageReference Include="Grpc.Core" Version="2.28.1" />
<PackageReference Include="Grpc.Tools" Version="2.28.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="JT808" Version="2.2.8" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.2" />
<PackageReference Include="JT808" Version="2.2.10" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\LICENSE" Pack="true" PackagePath="" /> <None Include="..\..\LICENSE" Pack="true" PackagePath="" />


+ 6
- 6
src/JT808.Gateway.Benchmark/JT808.Gateway.CleintBenchmark/JT808.Gateway.CleintBenchmark.csproj Wyświetl plik

@@ -12,18 +12,18 @@
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.2" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.2" />
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>
<ProjectReference Include="..\..\JT808.Gateway.Client\JT808.Gateway.Client.csproj" /> <ProjectReference Include="..\..\JT808.Gateway.Client\JT808.Gateway.Client.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\LICENSE" Pack="true" PackagePath="" />
<None Include="..\..\..\LICENSE" Pack="true" PackagePath="" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="wwwroot\echarts.min.js"> <None Include="wwwroot\echarts.min.js">


+ 4
- 4
src/JT808.Gateway.Benchmark/JT808.Gateway.ServerBenchmark/JT808.Gateway.ServerBenchmark.csproj Wyświetl plik

@@ -6,10 +6,10 @@
</PropertyGroup> </PropertyGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.8" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.2" />
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>


+ 6
- 6
src/JT808.Gateway.Client/JT808.Gateway.Client.csproj Wyświetl plik

@@ -22,12 +22,12 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="JT808" Version="2.2.8" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.2" />
<PackageReference Include="System.IO.Pipelines" Version="4.7.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
<PackageReference Include="JT808" Version="2.2.10" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting.Abstractions" Version="3.1.3" />
<PackageReference Include="System.IO.Pipelines" Version="4.7.1" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\LICENSE" Pack="true" PackagePath="" /> <None Include="..\..\LICENSE" Pack="true" PackagePath="" />


+ 6
- 6
src/JT808.Gateway.Kafka/JT808.Gateway.Kafka.csproj Wyświetl plik

@@ -20,12 +20,12 @@
<Version>$(JT808GatewayPackageVersion)</Version> <Version>$(JT808GatewayPackageVersion)</Version>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Confluent.Kafka" Version="1.3.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
<PackageReference Include="Confluent.Kafka" Version="1.4.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Options" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.3" />
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>


+ 26
- 8
src/JT808.Gateway.Kafka/JT808MsgConsumer.cs Wyświetl plik

@@ -11,8 +11,9 @@ using System.Threading.Tasks;


namespace JT808.Gateway.Kafka namespace JT808.Gateway.Kafka
{ {
public class JT808MsgConsumer : IJT808MsgConsumer
public sealed class JT808MsgConsumer : IJT808MsgConsumer
{ {
private bool disposed = false;
public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource(); public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource();


private readonly IConsumer<string, byte[]> consumer; private readonly IConsumer<string, byte[]> consumer;
@@ -36,6 +37,7 @@ namespace JT808.Gateway.Kafka
{ {
while (!Cts.IsCancellationRequested) while (!Cts.IsCancellationRequested)
{ {
if (disposed) return;
try try
{ {
//如果不指定分区,根据kafka的机制会从多个分区中拉取数据 //如果不指定分区,根据kafka的机制会从多个分区中拉取数据
@@ -43,9 +45,9 @@ namespace JT808.Gateway.Kafka
var data = consumer.Consume(Cts.Token); var data = consumer.Consume(Cts.Token);
if (logger.IsEnabled(LogLevel.Debug)) if (logger.IsEnabled(LogLevel.Debug))
{ {
logger.LogDebug($"Topic: {data.Topic} Key: {data.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
logger.LogDebug($"Topic: {data.Topic} Key: {data.Message.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
} }
callback((data.Key, data.Value));
callback((data.Message.Key, data.Message.Value));
} }
catch (ConsumeException ex) catch (ConsumeException ex)
{ {
@@ -62,21 +64,37 @@ namespace JT808.Gateway.Kafka
} }
}, Cts.Token); }, Cts.Token);
} }

public void Subscribe() public void Subscribe()
{ {
consumer.Subscribe(TopicName); consumer.Subscribe(TopicName);
} }

public void Unsubscribe() public void Unsubscribe()
{ {
if (disposed) return;
consumer.Unsubscribe(); consumer.Unsubscribe();
Cts.Cancel();
}
private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
consumer.Close();
consumer.Dispose();
Cts.Dispose();
}
disposed = true;
}
~JT808MsgConsumer()
{
Dispose(false);
} }

public void Dispose() public void Dispose()
{ {
consumer.Close();
consumer.Dispose();
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
} }
} }
} }

+ 23
- 6
src/JT808.Gateway.Kafka/JT808MsgProducer.cs Wyświetl plik

@@ -9,8 +9,9 @@ using System.Threading.Tasks;


namespace JT808.Gateway.Kafka namespace JT808.Gateway.Kafka
{ {
public class JT808MsgProducer : IJT808MsgProducer
public sealed class JT808MsgProducer : IJT808MsgProducer
{ {
private bool disposed = false;
public string TopicName { get; } public string TopicName { get; }


private readonly IProducer<string, byte[]> producer; private readonly IProducer<string, byte[]> producer;
@@ -21,18 +22,34 @@ namespace JT808.Gateway.Kafka
TopicName = producerConfigAccessor.Value.TopicName; TopicName = producerConfigAccessor.Value.TopicName;
} }


public void Dispose()
{
producer.Dispose();
}

public async ValueTask ProduceAsync(string terminalNo, byte[] data) public async ValueTask ProduceAsync(string terminalNo, byte[] data)
{ {
if (disposed) return;
await producer.ProduceAsync(TopicName, new Message<string, byte[]> await producer.ProduceAsync(TopicName, new Message<string, byte[]>
{ {
Key = terminalNo, Key = terminalNo,
Value = data Value = data
}); });
} }
private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
producer.Dispose();
}
disposed = true;
}
~JT808MsgProducer()
{
Dispose(false);
}
public void Dispose()
{
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
}
} }
} }

+ 26
- 5
src/JT808.Gateway.Kafka/JT808MsgReplyConsumer.cs Wyświetl plik

@@ -11,8 +11,9 @@ using System.Threading.Tasks;


namespace JT808.Gateway.Kafka namespace JT808.Gateway.Kafka
{ {
public class JT808MsgReplyConsumer : IJT808MsgReplyConsumer
public sealed class JT808MsgReplyConsumer : IJT808MsgReplyConsumer
{ {
private bool disposed = false;
public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource(); public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource();


private readonly IConsumer<string, byte[]> consumer; private readonly IConsumer<string, byte[]> consumer;
@@ -36,6 +37,7 @@ namespace JT808.Gateway.Kafka
{ {
while (!Cts.IsCancellationRequested) while (!Cts.IsCancellationRequested)
{ {
if (disposed) return;
try try
{ {
//如果不指定分区,根据kafka的机制会从多个分区中拉取数据 //如果不指定分区,根据kafka的机制会从多个分区中拉取数据
@@ -43,9 +45,9 @@ namespace JT808.Gateway.Kafka
var data = consumer.Consume(Cts.Token); var data = consumer.Consume(Cts.Token);
if (logger.IsEnabled(LogLevel.Debug)) if (logger.IsEnabled(LogLevel.Debug))
{ {
logger.LogDebug($"Topic: {data.Topic} Key: {data.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
logger.LogDebug($"Topic: {data.Topic} Key: {data.Message.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
} }
callback((data.Key, data.Value));
callback((data.Message.Key, data.Message.Value));
} }
catch (ConsumeException ex) catch (ConsumeException ex)
{ {
@@ -70,13 +72,32 @@ namespace JT808.Gateway.Kafka


public void Unsubscribe() public void Unsubscribe()
{ {
if (disposed) return;
consumer.Unsubscribe(); consumer.Unsubscribe();
Cts.Cancel();
} }


private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
consumer.Close();
consumer.Dispose();
Cts.Dispose();
}
disposed = true;
}
~JT808MsgReplyConsumer()
{
Dispose(false);
}
public void Dispose() public void Dispose()
{ {
consumer.Close();
consumer.Dispose();
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
} }
} }
} }

+ 24
- 6
src/JT808.Gateway.Kafka/JT808MsgReplyProducer.cs Wyświetl plik

@@ -9,8 +9,9 @@ using System.Threading.Tasks;


namespace JJT808.Gateway.Kafka namespace JJT808.Gateway.Kafka
{ {
public class JT808MsgReplyProducer : IJT808MsgReplyProducer
public sealed class JT808MsgReplyProducer : IJT808MsgReplyProducer
{ {
private bool disposed = false;
public string TopicName { get;} public string TopicName { get;}


private IProducer<string, byte[]> producer; private IProducer<string, byte[]> producer;
@@ -21,18 +22,35 @@ namespace JJT808.Gateway.Kafka
TopicName = producerConfigAccessor.Value.TopicName; TopicName = producerConfigAccessor.Value.TopicName;
} }


public void Dispose()
{
producer.Dispose();
}

public async ValueTask ProduceAsync(string terminalNo, byte[] data) public async ValueTask ProduceAsync(string terminalNo, byte[] data)
{ {
if (disposed) return;
await producer.ProduceAsync(TopicName, new Message<string, byte[]> await producer.ProduceAsync(TopicName, new Message<string, byte[]>
{ {
Key = terminalNo, Key = terminalNo,
Value = data Value = data
}); });
} }

private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
producer.Dispose();
}
disposed = true;
}
~JT808MsgReplyProducer()
{
Dispose(false);
}
public void Dispose()
{
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
}
} }
} }

+ 26
- 5
src/JT808.Gateway.Kafka/JT808SessionConsumer.cs Wyświetl plik

@@ -11,8 +11,9 @@ using System.Threading.Tasks;


namespace JT808.Gateway.Kafka namespace JT808.Gateway.Kafka
{ {
public class JT808SessionConsumer : IJT808SessionConsumer
public sealed class JT808SessionConsumer : IJT808SessionConsumer
{ {
private bool disposed = false;
public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource(); public CancellationTokenSource Cts { get; private set; } = new CancellationTokenSource();


private readonly IConsumer<string, string> consumer; private readonly IConsumer<string, string> consumer;
@@ -36,6 +37,7 @@ namespace JT808.Gateway.Kafka
{ {
while (!Cts.IsCancellationRequested) while (!Cts.IsCancellationRequested)
{ {
if (disposed) return;
try try
{ {
//如果不指定分区,根据kafka的机制会从多个分区中拉取数据 //如果不指定分区,根据kafka的机制会从多个分区中拉取数据
@@ -43,9 +45,9 @@ namespace JT808.Gateway.Kafka
var data = consumer.Consume(Cts.Token); var data = consumer.Consume(Cts.Token);
if (logger.IsEnabled(LogLevel.Debug)) if (logger.IsEnabled(LogLevel.Debug))
{ {
logger.LogDebug($"Topic: {data.Topic} Key: {data.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
logger.LogDebug($"Topic: {data.Topic} Key: {data.Message.Key} Partition: {data.Partition} Offset: {data.Offset} TopicPartitionOffset:{data.TopicPartitionOffset}");
} }
callback((data.Key, data.Value));
callback((data.Message.Key, data.Message.Value));
} }
catch (ConsumeException ex) catch (ConsumeException ex)
{ {
@@ -70,13 +72,32 @@ namespace JT808.Gateway.Kafka


public void Unsubscribe() public void Unsubscribe()
{ {
if (disposed) return;
consumer.Unsubscribe(); consumer.Unsubscribe();
Cts.Cancel();
} }


private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
consumer.Close();
consumer.Dispose();
Cts.Dispose();
}
disposed = true;
}
~JT808SessionConsumer()
{
Dispose(false);
}
public void Dispose() public void Dispose()
{ {
consumer.Close();
consumer.Dispose();
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
} }
} }
} }

+ 24
- 6
src/JT808.Gateway.Kafka/JT808SessionProducer.cs Wyświetl plik

@@ -9,8 +9,9 @@ using System.Threading.Tasks;


namespace JT808.Gateway.Kafka namespace JT808.Gateway.Kafka
{ {
public class JT808SessionProducer : IJT808SessionProducer
public sealed class JT808SessionProducer : IJT808SessionProducer
{ {
private bool disposed = false;
public string TopicName { get; } public string TopicName { get; }


private readonly IProducer<string, string> producer; private readonly IProducer<string, string> producer;
@@ -21,18 +22,35 @@ namespace JT808.Gateway.Kafka
TopicName = producerConfigAccessor.Value.TopicName; TopicName = producerConfigAccessor.Value.TopicName;
} }


public void Dispose()
{
producer.Dispose();
}

public async ValueTask ProduceAsync(string notice,string terminalNo) public async ValueTask ProduceAsync(string notice,string terminalNo)
{ {
if (disposed) return;
await producer.ProduceAsync(TopicName, new Message<string, string> await producer.ProduceAsync(TopicName, new Message<string, string>
{ {
Key = notice, Key = notice,
Value = terminalNo Value = terminalNo
}); });
} }

private void Dispose(bool disposing)
{
if (disposed) return;
if (disposing)
{
producer.Dispose();
}
disposed = true;
}
~JT808SessionProducer()
{
Dispose(false);
}
public void Dispose()
{
//必须为true
Dispose(true);
//通知垃圾回收机制不再调用终结器(析构器)
GC.SuppressFinalize(this);
}
} }
} }

+ 1
- 1
src/JT808.Gateway.Services/JT808.Gateway.MsgLogging/JT808.Gateway.MsgLogging.csproj Wyświetl plik

@@ -22,7 +22,7 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile> <PackageLicenseFile>LICENSE</PackageLicenseFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\..\LICENSE" Pack="true" PackagePath="" /> <None Include="..\..\..\LICENSE" Pack="true" PackagePath="" />


+ 1
- 1
src/JT808.Gateway.Services/JT808.Gateway.ReplyMessage/JT808.Gateway.ReplyMessage.csproj Wyświetl plik

@@ -21,7 +21,7 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile> <PackageLicenseFile>LICENSE</PackageLicenseFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\..\LICENSE" Pack="true" PackagePath="" /> <None Include="..\..\..\LICENSE" Pack="true" PackagePath="" />


+ 1
- 1
src/JT808.Gateway.Services/JT808.Gateway.SessionNotice/JT808.Gateway.SessionNotice.csproj Wyświetl plik

@@ -22,7 +22,7 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile> <PackageLicenseFile>LICENSE</PackageLicenseFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\..\LICENSE" Pack="true" PackagePath="" /> <None Include="..\..\..\LICENSE" Pack="true" PackagePath="" />


+ 1
- 1
src/JT808.Gateway.Services/JT808.Gateway.Transmit/JT808.Gateway.Transmit.csproj Wyświetl plik

@@ -22,7 +22,7 @@
<PackageLicenseFile>LICENSE</PackageLicenseFile> <PackageLicenseFile>LICENSE</PackageLicenseFile>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.3" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="..\..\..\LICENSE" Pack="true" PackagePath="" /> <None Include="..\..\..\LICENSE" Pack="true" PackagePath="" />


+ 4
- 4
src/JT808.Gateway.Tests/JT808.Gateway.NormalHosting/JT808.Gateway.NormalHosting.csproj Wyświetl plik

@@ -7,10 +7,10 @@




<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.8" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.2" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>


+ 4
- 4
src/JT808.Gateway.Tests/JT808.Gateway.QueueHosting/JT808.Gateway.QueueHosting.csproj Wyświetl plik

@@ -6,10 +6,10 @@
</PropertyGroup> </PropertyGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.2" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Hosting" Version="3.1.3" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.10.8" />
<PackageReference Include="NLog.Extensions.Logging" Version="1.6.2" />
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>


+ 4
- 4
src/JT808.Gateway.Tests/JT808.Gateway.Test/JT808.Gateway.Test.csproj Wyświetl plik

@@ -7,15 +7,15 @@
</PropertyGroup> </PropertyGroup>


<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.1.2" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.5.0" />
<PackageReference Include="System.IO.Pipelines" Version="4.7.0" />
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.1.3" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.6.0" />
<PackageReference Include="System.IO.Pipelines" Version="4.7.1" />
<PackageReference Include="xunit" Version="2.4.1" /> <PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.1"> <PackageReference Include="xunit.runner.visualstudio" Version="2.4.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>
<PackageReference Include="coverlet.collector" Version="1.2.0">
<PackageReference Include="coverlet.collector" Version="1.2.1">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference> </PackageReference>


+ 3
- 3
src/JT808.Gateway/JT808.Gateway.csproj Wyświetl plik

@@ -21,9 +21,9 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Extensions.Options" Version="3.1.2" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.2" />
<PackageReference Include="System.IO.Pipelines" Version="4.7.0" />
<PackageReference Include="Microsoft.Extensions.Options" Version="3.1.3" />
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="3.1.3" />
<PackageReference Include="System.IO.Pipelines" Version="4.7.1" />
</ItemGroup> </ItemGroup>


<ItemGroup> <ItemGroup>


Ładowanie…
Anuluj
Zapisz