From 86edf4290afdfa98347b2834bfdd677bcb1d7e61 Mon Sep 17 00:00:00 2001 From: ChenYi <296215406@outlook.com> Date: Tue, 1 Apr 2025 08:54:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95mongodb=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E5=86=99=E5=85=A5=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BasicScheduledMeterReadingService.cs | 79 ++++++++++++++++++- ...nergySystemScheduledMeterReadingService.cs | 2 +- src/JiShe.CollectBus.Host/appsettings.json | 5 +- 3 files changed, 82 insertions(+), 4 deletions(-) diff --git a/src/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs b/src/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs index bb3c743..ab2abb3 100644 --- a/src/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs +++ b/src/JiShe.CollectBus.Application/ScheduledMeterReading/BasicScheduledMeterReadingService.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Net; using System.Threading.Tasks; using DotNetCore.CAP; +using DotNetCore.CAP.Messages; using FreeSql; using JiShe.CollectBus.Ammeters; using JiShe.CollectBus.Common; @@ -14,6 +15,7 @@ using JiShe.CollectBus.Common.Enums; using JiShe.CollectBus.Common.Extensions; using JiShe.CollectBus.Common.Helpers; using JiShe.CollectBus.Common.Models; +using JiShe.CollectBus.Enums; using JiShe.CollectBus.GatherItem; using JiShe.CollectBus.IotSystems.Devices; using JiShe.CollectBus.IotSystems.MessageIssueds; @@ -40,16 +42,18 @@ namespace JiShe.CollectBus.ScheduledMeterReading private readonly ILogger _logger; private readonly ICapPublisher _capBus; private readonly IMeterReadingRecordRepository _meterReadingRecordsRepository; - + private readonly IRepository _deviceRepository; public BasicScheduledMeterReadingService( ILogger logger, ICapPublisher capBus, + IRepository deviceRepository, IMeterReadingRecordRepository meterReadingRecordsRepository) { _capBus = capBus; _logger = logger; _meterReadingRecordsRepository = meterReadingRecordsRepository; + _deviceRepository = deviceRepository; } /// @@ -1058,5 +1062,78 @@ namespace JiShe.CollectBus.ScheduledMeterReading } #endregion + + /// + /// 测试MongoDB插入数据 + /// + /// + public async Task TestBatchMongoDBInsert(int totalRecords = 100_00) + { + int fetchSize = 500; + int processedSize = 4; + var tasks = new List>(); + var timer = Stopwatch.StartNew(); + List devices = new List(); + for (long timestamp = 0; timestamp < totalRecords; timestamp++) + { + var device = new Device(timestamp.ToString(),$"client{timestamp}",DateTime.Now, DateTime.Now, DeviceStatus.Online); + devices.Add(device); + + if (timestamp % fetchSize == 0) + { + await _deviceRepository.InsertManyAsync(devices); + devices = new List(); + } + } + timer.Stop(); + var message = $"批量插入{totalRecords} 条记录,总共耗时:{timer.ElapsedMilliseconds}毫秒"; + _logger.LogError(message); + } + + /// + /// 测试MongoDB插入数据 + /// + /// + public async Task TestBatchMongoDBInsert2(int totalRecords = 100_000) + { + int fetchSize = 500; + int processedSize = 4; + var tasks = new List>(); + var timer = Stopwatch.StartNew(); + List devices = new List(); + for (long timestamp = 0; timestamp < totalRecords; timestamp++) + { + var device = new Device(timestamp.ToString(), $"client{timestamp}", DateTime.Now, DateTime.Now, DeviceStatus.Online); + devices.Add(device); + } + + await _deviceRepository.InsertManyAsync(devices); + + timer.Stop(); + var message = $"批量插入{totalRecords} 条记录,总共耗时:{timer.ElapsedMilliseconds}毫秒"; + _logger.LogError(message); + } + + /// + /// 测试MongoDB插入数据 + /// + /// + public async Task TestSingleMongoDBInsert(int totalRecords = 100_00) + { + int fetchSize = 500; + int processedSize = 4; + var tasks = new List>(); + var timer = Stopwatch.StartNew(); + List devices = new List(); + for (long timestamp = 0; timestamp < totalRecords; timestamp++) + { + var device = new Device(timestamp.ToString(), $"client{timestamp}", DateTime.Now, DateTime.Now, DeviceStatus.Online); + devices.Add(device); + await _deviceRepository.InsertAsync(device); + } + timer.Stop(); + var message = $"单次插入{totalRecords} 条记录,总共耗时:{timer.ElapsedMilliseconds}毫秒"; + _logger.LogError(message); + } } } diff --git a/src/JiShe.CollectBus.Application/ScheduledMeterReading/EnergySystemScheduledMeterReadingService.cs b/src/JiShe.CollectBus.Application/ScheduledMeterReading/EnergySystemScheduledMeterReadingService.cs index 24507fe..5bb19fa 100644 --- a/src/JiShe.CollectBus.Application/ScheduledMeterReading/EnergySystemScheduledMeterReadingService.cs +++ b/src/JiShe.CollectBus.Application/ScheduledMeterReading/EnergySystemScheduledMeterReadingService.cs @@ -28,7 +28,7 @@ namespace JiShe.CollectBus.ScheduledMeterReading { public EnergySystemScheduledMeterReadingService(ILogger logger, - ICapPublisher capBus, IMeterReadingRecordRepository _meterReadingRecordsRepository) :base(logger, capBus, _meterReadingRecordsRepository) + ICapPublisher capBus, IMeterReadingRecordRepository _meterReadingRecordsRepository, IRepository deviceRepository) :base(logger, capBus, deviceRepository, _meterReadingRecordsRepository) { } diff --git a/src/JiShe.CollectBus.Host/appsettings.json b/src/JiShe.CollectBus.Host/appsettings.json index 473d79e..26575c4 100644 --- a/src/JiShe.CollectBus.Host/appsettings.json +++ b/src/JiShe.CollectBus.Host/appsettings.json @@ -34,16 +34,17 @@ "CorsOrigins": "http://localhost:4200,http://localhost:3100" }, "ConnectionStrings": { - "Default": "mongodb://admin:admin02023@118.190.144.92:37117,118.190.144.92:37119,118.190.144.92:37120/JiSheCollectBus?authSource=admin&maxPoolSize=400&minPoolSize=10&waitQueueTimeoutMS=5000", + "Default": "mongodb://admin:lixiao1980@8.148.224.127:27017,8.148.224.21:27017,8.138.38.208:27017/JiSheCollectBus?authSource=admin&maxPoolSize=400&minPoolSize=10&waitQueueTimeoutMS=5000", //"Kafka": "121.42.242.91:29092,121.42.242.91:39092,121.42.242.91:49092", "Kafka": "8.148.227.21:9092,8.148.224.127:9092,8.138.38.208:9092", "PrepayDB": "server=118.190.144.92;database=jishe.sysdb;uid=sa;pwd=admin@2023;Encrypt=False;Trust Server Certificate=False", "EnergyDB": "server=118.190.144.92;database=db_energy;uid=sa;pwd=admin@2023;Encrypt=False;Trust Server Certificate=False" }, "Redis": { - "Configuration": "118.190.144.92:6379,syncTimeout=30000,abortConnect=false,connectTimeout=30000,allowAdmin=true", + "Configuration": "8.138.38.208:6379,syncTimeout=30000,abortConnect=false,connectTimeout=30000,allowAdmin=true,password=lixiao1980", "DefaultDB": "14", "HangfireDB": "15" + }, "Jwt": { "Audience": "JiShe.CollectBus",