diff --git a/HybirdFrameworkCore/Redis/RedisHelper.cs b/HybirdFrameworkCore/Redis/RedisHelper.cs
index 0f93318..cb2f136 100644
--- a/HybirdFrameworkCore/Redis/RedisHelper.cs
+++ b/HybirdFrameworkCore/Redis/RedisHelper.cs
@@ -89,6 +89,19 @@ public class RedisHelper : IDisposable
return db.StringGet(key);
}
+ ///
+ /// 先进先出队列
+ ///
+ ///
+ ///
+ ///
+ public void PublishAsync(string topic, string value)
+ {
+ ISubscriber sub = GetConnect().GetSubscriber();
+ sub.PublishAsync(topic, value);
+ }
+
+
///
/// 获取Redis中的值(异步版本)
///
@@ -107,7 +120,7 @@ public class RedisHelper : IDisposable
/// 值
/// 值
/// 操作是否成功
- public bool SetKeyValueStr(string key, string value, TimeSpan? expiry = default(TimeSpan?))
+ public bool SetKeyValueStr(string key, string value, TimeSpan? expiry = default(TimeSpan?))
{
var db = GetConnect().GetDatabase(_defaultDB);
return db.StringSet(key, value, expiry);
@@ -124,6 +137,7 @@ public class RedisHelper : IDisposable
var db = GetConnect().GetDatabase(_defaultDB);
return await db.StringSetAsync(key, value);
}
+
public bool Remove(string key)
{
var db = GetConnect().GetDatabase(_defaultDB);
diff --git a/Service/Charger/Handler/UploadTelemetryDataHandler.cs b/Service/Charger/Handler/UploadTelemetryDataHandler.cs
index 02909ce..69b7456 100644
--- a/Service/Charger/Handler/UploadTelemetryDataHandler.cs
+++ b/Service/Charger/Handler/UploadTelemetryDataHandler.cs
@@ -1,14 +1,10 @@
using DotNetty.Transport.Channels;
using HybirdFrameworkCore.Autofac.Attribute;
+using HybirdFrameworkCore.Redis;
using log4net;
+using Newtonsoft.Json;
using Service.Charger.Client;
-using Service.Charger.Common;
using Service.Charger.Msg.Charger.Req;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace Service.Charger.Handler
{
@@ -21,13 +17,17 @@ namespace Service.Charger.Handler
public class UploadTelemetryDataHandler : SimpleChannelInboundHandler, IBaseHandler
{
private static readonly ILog Log = LogManager.GetLogger(typeof(UploadTelemetryDataHandler));
+
+ public RedisHelper RedisHelper { get; set; }
protected override void ChannelRead0(IChannelHandlerContext ctx, UploadTelemetryData msg)
{
if (ClientMgr.TryGetClient(ctx.Channel, out var sn, out var client))
{
- //存储日志
+ msg.ChargerNo = sn;
Log.Info($"receive {msg} from {sn}");
+ RedisHelper.PublishAsync("UploadTelemetryData", JsonConvert.SerializeObject(msg));
+
client.UploadTelemetryData = msg;
//充电机实时充电功率
client.RealTimeChargePower = msg.HighVoltageAcquisitionCurrent * msg.HighVoltageAcquisitionVoltage;
diff --git a/Service/Charger/Msg/Charger/Req/UploadTelemetryData.cs b/Service/Charger/Msg/Charger/Req/UploadTelemetryData.cs
index c15aaf4..be59fdf 100644
--- a/Service/Charger/Msg/Charger/Req/UploadTelemetryData.cs
+++ b/Service/Charger/Msg/Charger/Req/UploadTelemetryData.cs
@@ -193,6 +193,11 @@ namespace Service.Charger.Msg.Charger.Req
///
[Property(392 + 8, 32, PropertyReadConstant.Bit, 0.01, 2)]
public float ACMeterCurrentBatteryValue { get; set; }
+
+ ///
+ /// 设备编号
+ ///
+ public string ChargerNo { get; set; }
}
}
\ No newline at end of file
diff --git a/WebStarter/Controllers/Test/WeatherForecastController.cs b/WebStarter/Controllers/Test/WeatherForecastController.cs
index 8400c0f..a7ff4ac 100644
--- a/WebStarter/Controllers/Test/WeatherForecastController.cs
+++ b/WebStarter/Controllers/Test/WeatherForecastController.cs
@@ -1,8 +1,11 @@
using System.Text;
using Autofac;
using HybirdFrameworkCore.Autofac;
+using HybirdFrameworkCore.Redis;
using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
using Service.Charger.Client;
+using Service.Charger.Msg.Charger.Req;
using Service.System;
namespace WebStarter.Controllers.Test;
@@ -31,12 +34,9 @@ public class WeatherForecastController : ControllerBase
{
_logger.LogInformation("this is a hello world");
+ RedisHelper redisHelper = AppInfo.Container.Resolve();
+ redisHelper.PublishAsync("UploadTelemetryData", JsonConvert.SerializeObject(new UploadTelemetryData()));
- ChargerClient client = AppInfo.Container.Resolve();
- client.InitBootstrap("127.0.0.1", 9998);
- client.BaseConnect();
- client.SessionAttr("1", "3");
- client.Channel.WriteAndFlushAsync(Encoding.ASCII.GetBytes("ddddddddddd"));
_logger.LogInformation("this is two hello world");
return Enumerable.Range(1, 5).Select(index => new WeatherForecast