Shun il y a 2 ans
Parent
commit
9d5c5aa112

+ 3 - 13
src/YSAI.DAQ/YSAI.Core/YSAI.Core.csproj

@@ -4,11 +4,8 @@
     <TargetFramework>net6.0</TargetFramework>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
-    <PackageLicenseFile>LICENSE</PackageLicenseFile>
-    <PackageRequireLicenseAcceptance>True</PackageRequireLicenseAcceptance>
-    <PackageReadmeFile>README.md</PackageReadmeFile>
     <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
-    <IncludeSymbols>False</IncludeSymbols>
+    <Version>1.0.0.4</Version>
   </PropertyGroup>
 
   <ItemGroup>
@@ -16,10 +13,6 @@
       <Pack>True</Pack>
       <PackagePath>\</PackagePath>
     </None>
-    <None Include="..\..\..\doc\README.md">
-      <Pack>True</Pack>
-      <PackagePath>\</PackagePath>
-    </None>
   </ItemGroup>
 
 	<ItemGroup>
@@ -27,11 +20,8 @@
 		<PackageReference Include="Microsoft.ClearScript" Version="7.4.3" />
 		<PackageReference Include="StackExchange.Redis" Version="2.6.122" />
 		<PackageReference Include="System.IO.Ports" Version="7.0.0" />
-	</ItemGroup>
-
-	<ItemGroup>
-		<ProjectReference Include="..\YSAI.Log\YSAI.Log.csproj" />
-		<ProjectReference Include="..\YSAI.Unility\YSAI.Unility.csproj" />
+		<PackageReference Include="YSAI.Log" Version="1.0.0.4" />
+		<PackageReference Include="YSAI.Unility" Version="1.0.0.4" />
 	</ItemGroup>
 
 </Project>

+ 18 - 8
src/YSAI.DAQ/YSAI.Core/interface/only/IRabbitMQ.cs

@@ -16,8 +16,10 @@ namespace YSAI.Core.@interface.only
         /// <summary>
         /// 发布 一个交换机可以发布多个消息
         /// </summary>
-        /// <param name="Topic">消息头</param>
         /// <param name="Content">消息内容</param>
+        /// <param name="Topic">主题不为空,则队列、路由设置为主题</param>
+        /// <param name="Queue">队列名称</param>
+        /// <param name="RoutingKey">路由键</param>
         /// <param name="Type">
         /// 通道类型
         /// direct  //用于AMQP直接交换的交换类型。
@@ -29,13 +31,15 @@ namespace YSAI.Core.@interface.only
         /// <param name="Exclusive">独有的</param>
         /// <param name="AutoDelete">自动删除</param>
         /// <returns>统一出参</returns>
-        OperateResult Publish(string Topic, string Content, string Type = "topic", bool Durable = true, bool Exclusive = false, bool AutoDelete = false);
+        OperateResult Publish( string Content, string? Topic = null, string? Queue = null, string? RoutingKey = null, string Type = "topic", bool Durable = true, bool Exclusive = false, bool AutoDelete = false);
 
         /// <summary>
         /// 发布 一个交换机可以发布多个消息
         /// </summary>
-        /// <param name="Topic">消息头</param>
         /// <param name="Content">消息内容</param>
+        /// <param name="Topic">主题不为空,则队列、路由设置为主题</param>
+        /// <param name="Queue">队列名称</param>
+        /// <param name="RoutingKey">路由键</param>
         /// <param name="Type">
         /// 通道类型
         /// direct  //用于AMQP直接交换的交换类型。
@@ -46,13 +50,17 @@ namespace YSAI.Core.@interface.only
         /// <param name="Durable">持久化</param>
         /// <param name="Exclusive">独有的</param>
         /// <param name="AutoDelete">自动删除</param>
+        /// <param name="Queue">队列名称</param>
+        /// <param name="RoutingKey">路由键</param>
         /// <returns>统一出参</returns>
-        Task<OperateResult> PublishAsync(string Topic, string Content, string Type = "topic", bool Durable = true, bool Exclusive = false, bool AutoDelete = false);
+        Task<OperateResult> PublishAsync(string Content, string? Topic = null, string? Queue = null, string? RoutingKey = null, string Type = "topic", bool Durable = true, bool Exclusive = false, bool AutoDelete = false);
 
         /// <summary>
         /// 消费 一个交换机可以消费多个消息
         /// </summary>
-        /// <param name="Topic">消息头</param>
+        /// <param name="Topic">主题不为空,则队列、路由设置为主题</param>
+        /// <param name="Queue">队列名称</param>
+        /// <param name="RoutingKey">路由键</param>
         /// <param name="Type">
         /// 通道类型
         /// direct  //用于AMQP直接交换的交换类型。
@@ -65,12 +73,14 @@ namespace YSAI.Core.@interface.only
         /// <param name="Exclusive">独有的</param>
         /// <param name="AutoDelete">自动删除</param>
         /// <returns>统一出参</returns>
-        OperateResult Consume(string Topic, string Type = "topic", bool AutoAck = false, bool Durable = true, bool Exclusive = false, bool AutoDelete = false);
+        OperateResult Consume(string? Topic = null, string? Queue = null, string? RoutingKey = null, string Type = "topic", bool AutoAck = false, bool Durable = true, bool Exclusive = false, bool AutoDelete = false);
 
         /// <summary>
         /// 消费 一个交换机可以消费多个消息
         /// </summary>
-        /// <param name="Topic">消息头</param>
+        /// <param name="Topic">主题不为空,则队列、路由设置为主题</param>
+        /// <param name="Queue">队列名称</param>
+        /// <param name="RoutingKey">路由键</param>
         /// <param name="Type">
         /// 通道类型
         /// direct  //用于AMQP直接交换的交换类型。
@@ -83,6 +93,6 @@ namespace YSAI.Core.@interface.only
         /// <param name="Exclusive">独有的</param>
         /// <param name="AutoDelete">自动删除</param>
         /// <returns>统一出参</returns>
-        Task<OperateResult> ConsumeAsync(string Topic, string Type = "topic", bool AutoAck = false, bool Durable = true, bool Exclusive = false, bool AutoDelete = false);
+        Task<OperateResult> ConsumeAsync(string? Topic = null, string? Queue = null, string? RoutingKey = null, string Type = "topic", bool AutoAck = false, bool Durable = true, bool Exclusive = false, bool AutoDelete = false);
     }
 }

+ 15 - 15
src/YSAI.DAQ/YSAI.DAQ.sln

@@ -25,8 +25,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.DB", "YSAI.DB\YSAI.DB.
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "daq", "daq", "{0A264424-1AD7-49FA-B813-D96498066479}"
 EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Test", "YSAI.Test\YSAI.Test.csproj", "{26BEA521-56B3-4BE8-9F5C-62BCA2323ABD}"
-EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.RabbitMQ", "YSAI.RabbitMQ\YSAI.RabbitMQ.csproj", "{8CE7E64C-7A6A-4581-A9B3-C05214986B4F}"
 EndProject
 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Manage", "YSAI.Manage\YSAI.Manage.csproj", "{6E9667C0-303C-472D-949B-60F812E6C659}"
@@ -75,21 +73,23 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "windows", "windows", "{1856
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "pack", "pack", "{1EBA4FD7-DF52-49A0-8AA4-9E61ABC614F5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.DB.Pack", "YSAI.DB.Pack\YSAI.DB.Pack.csproj", "{76474288-450D-4553-BA0B-6ECB06BB48D8}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.DB.Pack", "YSAI.DB.Pack\YSAI.DB.Pack.csproj", "{76474288-450D-4553-BA0B-6ECB06BB48D8}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Modbus.Pack", "YSAI.Modbus.Pack\YSAI.Modbus.Pack.csproj", "{183B670D-6A3C-49AF-9558-4154824319CA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.Modbus.Pack", "YSAI.Modbus.Pack\YSAI.Modbus.Pack.csproj", "{183B670D-6A3C-49AF-9558-4154824319CA}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Opc.Pack", "YSAI.Opc.Pack\YSAI.Opc.Pack.csproj", "{03C88A20-C849-49AF-BCA9-D2F78A7054F0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.Opc.Pack", "YSAI.Opc.Pack\YSAI.Opc.Pack.csproj", "{03C88A20-C849-49AF-BCA9-D2F78A7054F0}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.S7.Pack", "YSAI.S7.Pack\YSAI.S7.Pack.csproj", "{C09178F0-6FEA-4C3B-B84D-89C355C96A13}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.S7.Pack", "YSAI.S7.Pack\YSAI.S7.Pack.csproj", "{C09178F0-6FEA-4C3B-B84D-89C355C96A13}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Kafka.Pack", "YSAI.Kafka.Pack\YSAI.Kafka.Pack.csproj", "{FA745761-1C35-40A8-8695-8114EAF4273F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.Kafka.Pack", "YSAI.Kafka.Pack\YSAI.Kafka.Pack.csproj", "{FA745761-1C35-40A8-8695-8114EAF4273F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Mqtt.Pack", "YSAI.Mqtt.Pack\YSAI.Mqtt.Pack.csproj", "{690A2E26-908A-4AED-8689-01B23F5CFCBE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.Mqtt.Pack", "YSAI.Mqtt.Pack\YSAI.Mqtt.Pack.csproj", "{690A2E26-908A-4AED-8689-01B23F5CFCBE}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.RabbitMQ.Pack", "YSAI.RabbitMQ.Pack\YSAI.RabbitMQ.Pack.csproj", "{68C1433D-2DB7-499E-9225-CB8191891F8F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.RabbitMQ.Pack", "YSAI.RabbitMQ.Pack\YSAI.RabbitMQ.Pack.csproj", "{68C1433D-2DB7-499E-9225-CB8191891F8F}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "YSAI.Can.Pack", "YSAI.Can.Pack\YSAI.Can.Pack.csproj", "{940983FB-5DDE-4B13-BBA0-FDA1EEED6C02}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.Can.Pack", "YSAI.Can.Pack\YSAI.Can.Pack.csproj", "{940983FB-5DDE-4B13-BBA0-FDA1EEED6C02}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "YSAI.Test", "YSAI.Test\YSAI.Test.csproj", "{7DC11866-9D92-4B0A-AFDA-A841359F38A0}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -137,10 +137,6 @@ Global
 		{439C729E-C66D-492B-A481-0C7F73F04E76}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{439C729E-C66D-492B-A481-0C7F73F04E76}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{439C729E-C66D-492B-A481-0C7F73F04E76}.Release|Any CPU.Build.0 = Release|Any CPU
-		{26BEA521-56B3-4BE8-9F5C-62BCA2323ABD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{26BEA521-56B3-4BE8-9F5C-62BCA2323ABD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{26BEA521-56B3-4BE8-9F5C-62BCA2323ABD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{26BEA521-56B3-4BE8-9F5C-62BCA2323ABD}.Release|Any CPU.Build.0 = Release|Any CPU
 		{8CE7E64C-7A6A-4581-A9B3-C05214986B4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{8CE7E64C-7A6A-4581-A9B3-C05214986B4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{8CE7E64C-7A6A-4581-A9B3-C05214986B4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -237,6 +233,10 @@ Global
 		{940983FB-5DDE-4B13-BBA0-FDA1EEED6C02}.Debug|Any CPU.Build.0 = Debug|Any CPU
 		{940983FB-5DDE-4B13-BBA0-FDA1EEED6C02}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{940983FB-5DDE-4B13-BBA0-FDA1EEED6C02}.Release|Any CPU.Build.0 = Release|Any CPU
+		{7DC11866-9D92-4B0A-AFDA-A841359F38A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{7DC11866-9D92-4B0A-AFDA-A841359F38A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{7DC11866-9D92-4B0A-AFDA-A841359F38A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{7DC11866-9D92-4B0A-AFDA-A841359F38A0}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
@@ -253,7 +253,6 @@ Global
 		{2B2ED6D8-B498-4589-ADAB-4599B9EFFC70} = {9D8EDBBA-7A97-4D84-9B12-7FCC2F834046}
 		{439C729E-C66D-492B-A481-0C7F73F04E76} = {0A264424-1AD7-49FA-B813-D96498066479}
 		{0A264424-1AD7-49FA-B813-D96498066479} = {7EB5153B-7702-4D7B-8592-FE6D992682AB}
-		{26BEA521-56B3-4BE8-9F5C-62BCA2323ABD} = {12CB0510-7B1E-4518-AA3B-412A4D323D42}
 		{8CE7E64C-7A6A-4581-A9B3-C05214986B4F} = {9D8EDBBA-7A97-4D84-9B12-7FCC2F834046}
 		{6E9667C0-303C-472D-949B-60F812E6C659} = {ECAD410C-2895-4836-BCA7-D4EF340E778E}
 		{6F526F44-A5B0-49D5-8E04-DBFDB5F8E6C6} = {1856E9E1-33C4-45C1-832C-854F9BE1ACC4}
@@ -282,6 +281,7 @@ Global
 		{690A2E26-908A-4AED-8689-01B23F5CFCBE} = {1EBA4FD7-DF52-49A0-8AA4-9E61ABC614F5}
 		{68C1433D-2DB7-499E-9225-CB8191891F8F} = {1EBA4FD7-DF52-49A0-8AA4-9E61ABC614F5}
 		{940983FB-5DDE-4B13-BBA0-FDA1EEED6C02} = {1EBA4FD7-DF52-49A0-8AA4-9E61ABC614F5}
+		{7DC11866-9D92-4B0A-AFDA-A841359F38A0} = {12CB0510-7B1E-4518-AA3B-412A4D323D42}
 	EndGlobalSection
 	GlobalSection(ExtensibilityGlobals) = postSolution
 		SolutionGuid = {5D5D3927-6714-40C0-84EA-44C5BA4C5E87}

+ 1 - 7
src/YSAI.DAQ/YSAI.DB/YSAI.DB.csproj

@@ -12,12 +12,6 @@
 		<PackageReference Include="System.Data.OracleClient" Version="1.0.8" />
 		<PackageReference Include="System.Data.SqlClient" Version="4.8.5" />
 		<PackageReference Include="System.Data.SQLite" Version="1.0.118" />
+		<PackageReference Include="YSAI.Core" Version="1.0.0.4" />
 	</ItemGroup>
-
-	<ItemGroup>
-		<ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
-		<ProjectReference Include="..\YSAI.Log\YSAI.Log.csproj" />
-		<ProjectReference Include="..\YSAI.Unility\YSAI.Unility.csproj" />
-	</ItemGroup>
-	
 </Project>

+ 4 - 4
src/YSAI.DAQ/YSAI.DaqManage/YSAI.DaqManage.csproj

@@ -5,9 +5,9 @@
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
   </PropertyGroup>
-	
-  <ItemGroup>
-    <ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
-  </ItemGroup>
+
+	<ItemGroup>
+		<PackageReference Include="YSAI.Core" Version="1.0.0.4" />
+	</ItemGroup>
 
 </Project>

+ 1 - 3
src/YSAI.DAQ/YSAI.Kafka/YSAI.Kafka.csproj

@@ -8,10 +8,8 @@
 
   <ItemGroup>
     <PackageReference Include="Confluent.Kafka" Version="2.2.0" />
+	<PackageReference Include="YSAI.Core" Version="1.0.0.4" />
   </ItemGroup>
 
-  <ItemGroup>
-    <ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
-  </ItemGroup>
 
 </Project>

+ 13 - 0
src/YSAI.DAQ/YSAI.Log/Properties/PublishProfiles/FolderProfile.pubxml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <Configuration>Release</Configuration>
+    <Platform>Any CPU</Platform>
+    <PublishDir>bin\Release\net6.0\publish\</PublishDir>
+    <PublishProtocol>FileSystem</PublishProtocol>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>

+ 3 - 1
src/YSAI.DAQ/YSAI.Log/YSAI.Log.csproj

@@ -1,9 +1,11 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
   <PropertyGroup>
     <TargetFramework>net6.0</TargetFramework>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
+	<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
+	<Version>1.0.0.4</Version>
   </PropertyGroup>
 
 </Project>

+ 1 - 2
src/YSAI.DAQ/YSAI.Manage/YSAI.Manage.csproj

@@ -100,10 +100,9 @@
 
   <ItemGroup>
     <PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
+	<PackageReference Include="YSAI.Core" Version="1.0.0.4" />
   </ItemGroup>
-
   <ItemGroup>
-    <ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
     <ProjectReference Include="..\YSAI.DaqManage\YSAI.DaqManage.csproj" />
     <ProjectReference Include="..\YSAI.RelayManage\YSAI.RelayManage.csproj" />
   </ItemGroup>

+ 1 - 1
src/YSAI.DAQ/YSAI.Manage/param/YSAI.RabbitMQ.Param.json

@@ -1,5 +1,5 @@
 {
-    "SN": "ac7add1a-3ae6-4077-9469-95e2096e94cf",
+    "SN": "2cf31d9f-d7c4-4ad6-a9af-5089e8dc1963",
     "ExChangeName": null,
     "HostName": null,
     "Port": 0,

+ 3 - 6
src/YSAI.DAQ/YSAI.Modbus/YSAI.Modbus.csproj

@@ -6,11 +6,8 @@
     <Nullable>enable</Nullable>
   </PropertyGroup>
 
-  <ItemGroup>
-    <ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
-    <ProjectReference Include="..\YSAI.Log\YSAI.Log.csproj" />
-    <ProjectReference Include="..\YSAI.Unility\YSAI.Unility.csproj" />
-  </ItemGroup>
-
+	<ItemGroup>
+		<PackageReference Include="YSAI.Core" Version="1.0.0.4" />
+	</ItemGroup>
 
 </Project>

+ 1 - 4
src/YSAI.DAQ/YSAI.Mqtt/YSAI.Mqtt.csproj

@@ -9,11 +9,8 @@
   <ItemGroup>
     <PackageReference Include="MQTTnet" Version="4.2.1.781" />
     <PackageReference Include="MQTTnet.AspNetCore" Version="4.2.1.781" />
+	<PackageReference Include="YSAI.Core" Version="1.0.0.4" />
   </ItemGroup>
 
-  <ItemGroup>
-    <ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
-    <ProjectReference Include="..\YSAI.Unility\YSAI.Unility.csproj" />
-  </ItemGroup>
 
 </Project>

+ 1 - 5
src/YSAI.DAQ/YSAI.Opc/YSAI.Opc.csproj

@@ -21,14 +21,10 @@
   </ItemGroup>
 
   <ItemGroup>
+	<PackageReference Include="YSAI.Core" Version="1.0.0.4" />
     <PackageReference Include="OPCFoundation.NetStandard.Opc.Ua" Version="1.4.371.96" />
   </ItemGroup>
 
-  <ItemGroup>
-    <ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
-    <ProjectReference Include="..\YSAI.Log\YSAI.Log.csproj" />
-    <ProjectReference Include="..\YSAI.Unility\YSAI.Unility.csproj" />
-  </ItemGroup>
 
   <ItemGroup>
     <Folder Include="da\lib\" />

+ 57 - 25
src/YSAI.DAQ/YSAI.RabbitMQ/RabbitMQOperate.cs

@@ -156,6 +156,7 @@ namespace YSAI.RabbitMQ
                 return Break("Off", false, "打开RabbitMQ连接异常:" + ex.Message);
             }
         }
+
         public void Dispose()
         {
             Off();
@@ -164,7 +165,7 @@ namespace YSAI.RabbitMQ
             ThisObjList.Remove(this);
         }
 
-        public OperateResult Publish(string Topic, string Content, string Type = "topic", bool Durable = true, bool Exclusive = false, bool AutoDelete = false)
+        public OperateResult Publish(string Content, string? Topic = null, string? Queue = null, string? RoutingKey = null, string Type = "topic", bool Durable = true, bool Exclusive = false, bool AutoDelete = false)
         {
             //开始记录运行时间
             Depart("Publish");
@@ -176,6 +177,19 @@ namespace YSAI.RabbitMQ
                 }
                 else
                 {
+                    //主题不为空,则队列、路由设置为主题
+                    if (!string.IsNullOrWhiteSpace(Topic))
+                    {
+                        Queue = Topic;
+                        RoutingKey = Topic;
+                    }
+                    else
+                    {
+                        if (string.IsNullOrWhiteSpace(Queue) || string.IsNullOrWhiteSpace(RoutingKey))
+                        {
+                            return Break("Publish", false, "Queue、RoutingKey 不能为空");
+                        }
+                    }
                     //判断是否存在此通道
                     if (!Channels.ContainsKey(basics.ExChangeName))
                     {
@@ -186,20 +200,21 @@ namespace YSAI.RabbitMQ
                         Channels.TryAdd(basics.ExChangeName, channel);
                     }
                     //判断队列与消息头是否存在
-                    if (!QueueAndBasicProperties.ContainsKey(Topic))
+                    if (!QueueAndBasicProperties.ContainsKey(Queue))
                     {
                         //创建队列
-                        QueueDeclareOk queueDeclareOk = Channels[basics.ExChangeName].QueueDeclare(Topic, Durable, Exclusive, AutoDelete);
+                        QueueDeclareOk queueDeclareOk = Channels[basics.ExChangeName].QueueDeclare(Queue, Durable, Exclusive, AutoDelete);
+                        
                         //绑定队列
-                        Channels[basics.ExChangeName].QueueBind(Topic, basics.ExChangeName, Topic);
+                        Channels[basics.ExChangeName].QueueBind(Queue, basics.ExChangeName, RoutingKey);
                         //消息持久化
                         IBasicProperties basicProperties = Channels[basics.ExChangeName].CreateBasicProperties();
                         basicProperties.Persistent = true;
                         //添加消息头
-                        QueueAndBasicProperties.TryAdd(Topic, (queueDeclareOk, basicProperties));
+                        QueueAndBasicProperties.TryAdd(Queue, (queueDeclareOk, basicProperties));
                     }
                     // 发布消息
-                    Channels[basics.ExChangeName].BasicPublish(basics.ExChangeName, Topic, QueueAndBasicProperties[Topic].BasicProperties, Encoding.UTF8.GetBytes(Content));
+                    Channels[basics.ExChangeName].BasicPublish(basics.ExChangeName, RoutingKey, QueueAndBasicProperties[Queue].BasicProperties, Encoding.UTF8.GetBytes(Content));
                     //返回
                     return Break("Publish", true);
                 }
@@ -210,12 +225,12 @@ namespace YSAI.RabbitMQ
             }
         }
 
-        public Task<OperateResult> PublishAsync(string Topic, string Content, string Type = "topic", bool Durable = true, bool Exclusive = false, bool AutoDelete = false)
+        public Task<OperateResult> PublishAsync(string Content, string? Topic = null, string? Queue = null, string? RoutingKey = null, string Type = "topic", bool Durable = true, bool Exclusive = false, bool AutoDelete = false)
         {
-            return Task.Run(() => Publish(Topic, Content, Type, Durable, Exclusive, AutoDelete));
+            return Task.Run(() => Publish( Content,Topic,Queue,RoutingKey, Type, Durable, Exclusive, AutoDelete));
         }
 
-        public OperateResult Consume(string Topic, string Type = "topic", bool AutoAck = false, bool Durable = true, bool Exclusive = false, bool AutoDelete = false)
+        public OperateResult Consume(string? Topic = null, string? Queue = null, string? RoutingKey = null, string Type = "topic", bool AutoAck = false, bool Durable = true, bool Exclusive = false, bool AutoDelete = false)
         {
             //开始记录运行时间
             Depart("Consume");
@@ -227,6 +242,19 @@ namespace YSAI.RabbitMQ
                 }
                 else
                 {
+                    //主题不为空,则队列、路由设置为主题
+                    if (!string.IsNullOrWhiteSpace(Topic))
+                    {
+                        Queue = Topic;
+                        RoutingKey = Topic;
+                    }
+                    else
+                    {
+                        if (string.IsNullOrWhiteSpace(Queue) || string.IsNullOrWhiteSpace(RoutingKey))
+                        {
+                            return Break("Consume", false, "Queue、RoutingKey 不能为空");
+                        }
+                    }
                     //判断是否存在此通道
                     if (!Channels.ContainsKey(basics.ExChangeName))
                     {
@@ -237,12 +265,13 @@ namespace YSAI.RabbitMQ
                         Channels.TryAdd(basics.ExChangeName, channel);
                     }
 
-                    if (!Queues.ContainsKey(Topic))
+                    if (!Queues.ContainsKey(Queue))
                     {
                         //创建队列
-                        Channels[basics.ExChangeName].QueueDeclare(Topic, Durable, Exclusive, AutoDelete);
+                        Channels[basics.ExChangeName].QueueDeclare(Queue, Durable, Exclusive, AutoDelete);
+
                         //绑定队列
-                        Channels[basics.ExChangeName].QueueBind(Topic, basics.ExChangeName, Topic);
+                        Channels[basics.ExChangeName].QueueBind(Queue, basics.ExChangeName, RoutingKey);
 
                         EventingBasicConsumer consumer = new(Channels[basics.ExChangeName]);
                         consumer.Received += delegate (object? sender, BasicDeliverEventArgs e)
@@ -250,17 +279,13 @@ namespace YSAI.RabbitMQ
                             Consumer_Received(sender, e, AutoAck);
                         };
                         // 开启消费者与通道、队列关联
-                        Channels[basics.ExChangeName].BasicConsume(Topic, AutoAck, consumer);
+                        Channels[basics.ExChangeName].BasicConsume(Queue, AutoAck, consumer);
                         //返回
                         return Break("Consume", true);
                     }
-                    if (OnEventHandler == null)
-                    {
-                        return Break("Consume", false, "已存在此消费,请注册事件返回参数");
-                    }
                     else
                     {
-                        return Break("Consume", false, "已存在此消费");
+                        return Break("Consume", false, $"已存在 {Queue} 的消费");
                     }
                 }
             }
@@ -270,15 +295,15 @@ namespace YSAI.RabbitMQ
             }
         }
 
-        public Task<OperateResult> ConsumeAsync(string Topic, string Type = "topic", bool AutoAck = false, bool Durable = true, bool Exclusive = false, bool AutoDelete = false)
+        public Task<OperateResult> ConsumeAsync(string? Topic = null, string? Queue = null, string? RoutingKey = null, string Type = "topic", bool AutoAck = false, bool Durable = true, bool Exclusive = false, bool AutoDelete = false)
         {
-            return Task.Run(() => Consume(Topic, Type, AutoAck, Durable, Exclusive, AutoDelete));
+            return Task.Run(() => Consume(Topic, Queue, RoutingKey, Type, AutoAck, Durable, Exclusive, AutoDelete));
         }
 
         /// <summary>
         /// [消费]接收发布者消息
         /// </summary>
-        private void Consumer_Received(object? sender, BasicDeliverEventArgs e, bool AutoAck = false)
+        private void Consumer_Received(object? sender, BasicDeliverEventArgs e, bool AutoAck)
         {
             dynamic DynamicObj = new ExpandoObject();
             DynamicObj.Content = Encoding.UTF8.GetString(e.Body.ToArray());
@@ -294,7 +319,7 @@ namespace YSAI.RabbitMQ
         public OperateResult Produce(string Topic, string Content)
         {
             Depart("Produce");
-            OperateResult operateResult = Publish(Topic,Content);
+            OperateResult operateResult = Publish(Content, Topic);
             return Break("Produce", operateResult.State, operateResult.Message);
         }
 
@@ -306,7 +331,7 @@ namespace YSAI.RabbitMQ
         public OperateResult Subscribe(string Topic)
         {
             Depart("Subscribe");
-            OperateResult operateResult = Consume(Topic);
+            OperateResult operateResult = Consume(Topic:Topic);
             return Break("Subscribe", operateResult.State, operateResult.Message);
         }
 
@@ -320,8 +345,15 @@ namespace YSAI.RabbitMQ
             Depart("UnSubscribe");
             try
             {
-                Channels[basics.ExChangeName].QueueDelete(Topic);
-                return Break("UnSubscribe", true);
+                if (connection == null || !connection.IsOpen)
+                {
+                    return Break("UnSubscribe", false, "RabbitMQ连接未打开");
+                }
+                else
+                {
+                    Channels[basics.ExChangeName].QueueDelete(Topic);
+                    return Break("UnSubscribe", true);
+                }
             }
             catch (Exception ex)
             {

+ 1 - 3
src/YSAI.DAQ/YSAI.RabbitMQ/YSAI.RabbitMQ.csproj

@@ -8,10 +8,8 @@
 
   <ItemGroup>
     <PackageReference Include="RabbitMQ.Client" Version="6.5.0" />
+    <PackageReference Include="YSAI.Core" Version="1.0.0.4" />
   </ItemGroup>
 
-  <ItemGroup>
-    <ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
-  </ItemGroup>
 
 </Project>

+ 1 - 1
src/YSAI.DAQ/YSAI.RelayManage/YSAI.RelayManage.csproj

@@ -6,6 +6,6 @@
     <Nullable>enable</Nullable>
   </PropertyGroup>
 	<ItemGroup>
-		<ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
+		<PackageReference Include="YSAI.Core" Version="1.0.0.4" />
 	</ItemGroup>
 </Project>

+ 2 - 3
src/YSAI.DAQ/YSAI.S7/YSAI.S7.csproj

@@ -5,9 +5,8 @@
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
   </PropertyGroup>
-
   <ItemGroup>
-    <ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
+	<PackageReference Include="YSAI.Core" Version="1.0.0.4" />
   </ItemGroup>
-
+	
 </Project>

+ 4 - 4
src/YSAI.DAQ/YSAI.Test.Console/Program.cs

@@ -13,9 +13,9 @@ using YSAI.Unility;
 
 OpcUaClientData.Basics opcUaClientData1 = new OpcUaClientData.Basics() 
 {
-    Name="ysai",
-    Password="ysai",
-    ServerUrl= "opc.tcp://127.0.0.1:8866/Opc.Ua.Service",
+    Name="ys",
+    Password= "ys123456",
+    ServerUrl= "opc.tcp://192.168.2.200:49310/Opc.Ua.Service",
     SN="OPCUA1",
     UserName="ysai"
 };
@@ -30,7 +30,7 @@ OpcUaClientData.Basics opcUaClientData2 = new OpcUaClientData.Basics()
 {
     Name = "ysai",
     Password = "ysai",
-    ServerUrl = "opc.tcp://127.0.0.1:8866/Opc.Ua.Service",
+    ServerUrl = "opc.tcp://192.168.2.200:49310/Opc.Ua.Service",
     SN = "OPCUA2",
     UserName = "ysai"
 };

+ 0 - 1
src/YSAI.DAQ/YSAI.Test.Console/YSAI.Test.Console.csproj

@@ -5,7 +5,6 @@
     <TargetFramework>net6.0</TargetFramework>
     <ImplicitUsings>enable</ImplicitUsings>
     <Nullable>enable</Nullable>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
 
 	<ItemGroup>

+ 14 - 20
src/YSAI.DAQ/YSAI.Test/TestAll.cs

@@ -1,30 +1,28 @@
 using OpcDaNetApi;
+using S7.Net;
 using System.Collections.Concurrent;
-using YSAI.Core.@enum;
 using YSAI.Core.data;
+using YSAI.Core.@enum;
 using YSAI.Core.reflection;
+using YSAI.DaqManage;
+using YSAI.Kafka;
+using YSAI.Modbus.client;
+using YSAI.Modbus.service;
 using YSAI.Mqtt.client;
+using YSAI.Mqtt.service.websocket;
 using YSAI.Opc.da.client;
-using YSAI.Unility;
-using static YSAI.Core.reflection.ReflectionData;
-using static YSAI.Core.reflection.ReflectionData.Basics.DllData.NamespaceData;
-using YSAI.Core.@interface.only;
 using YSAI.Opc.ua.client;
-using YSAI.Modbus.client;
 using YSAI.Opc.ua.service;
-using YSAI.Mqtt.service.websocket;
-using YSAI.Modbus.service;
-using YSAI.Kafka;
 using YSAI.RabbitMQ;
-using S7.Net;
 using YSAI.S7.client;
-using YSAI.RelayManage;
-using YSAI.DaqManage;
+using YSAI.Unility;
+using static YSAI.Core.reflection.ReflectionData;
+using static YSAI.Core.reflection.ReflectionData.Basics.DllData.NamespaceData;
 
 namespace YSAI.Test
 {
     [TestClass]
-    public class TestAll
+    public class UnitTest1
     {
         [TestMethod]
         public void 反射与MQTT组合使用()
@@ -273,7 +271,7 @@ namespace YSAI.Test
         public void modbus测试()
         {
 
-            ModbusTcpServer modbusTcpServer = new ModbusTcpServer(502,"127.0.0.1");
+            ModbusTcpServer modbusTcpServer = new ModbusTcpServer(502, "127.0.0.1");
             modbusTcpServer.Start();
 
             Thread.Sleep(1000);
@@ -287,8 +285,8 @@ namespace YSAI.Test
                 AddressName = "0,10"  //从0开始往后读10位
             });
 
-            ConcurrentDictionary<ushort, ushort[]> wp=new ConcurrentDictionary<ushort, ushort[]>();
-            ushort[] ushorts=new ushort[16];
+            ConcurrentDictionary<ushort, ushort[]> wp = new ConcurrentDictionary<ushort, ushort[]>();
+            ushort[] ushorts = new ushort[16];
             for (int i = 0; i < 16; i++)
             {
                 ushorts[i] = (ushort)(i * new Random().NextDouble());
@@ -1252,9 +1250,5 @@ namespace YSAI.Test
                     break;
             }
         }
-
-
-
-
     }
 }

+ 5 - 12
src/YSAI.DAQ/YSAI.Test/YSAI.Test.csproj

@@ -7,30 +7,23 @@
 
     <IsPackable>false</IsPackable>
     <IsTestProject>true</IsTestProject>
-    <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.7.1" />
-    <PackageReference Include="MSTest.TestAdapter" Version="3.1.1" />
-    <PackageReference Include="MSTest.TestFramework" Version="3.1.1" />
-    <PackageReference Include="coverlet.collector" Version="6.0.0">
-      <PrivateAssets>all</PrivateAssets>
-      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
-    </PackageReference>
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
+    <PackageReference Include="MSTest.TestAdapter" Version="2.2.10" />
+    <PackageReference Include="MSTest.TestFramework" Version="2.2.10" />
+    <PackageReference Include="coverlet.collector" Version="3.2.0" />
+    <PackageReference Include="YSAI.Core" Version="1.0.0.4" />
   </ItemGroup>
 
   <ItemGroup>
-    <ProjectReference Include="..\YSAI.Core\YSAI.Core.csproj" />
     <ProjectReference Include="..\YSAI.DaqManage\YSAI.DaqManage.csproj" />
-    <ProjectReference Include="..\YSAI.DB\YSAI.DB.csproj" />
     <ProjectReference Include="..\YSAI.Kafka\YSAI.Kafka.csproj" />
     <ProjectReference Include="..\YSAI.Modbus\YSAI.Modbus.csproj" />
     <ProjectReference Include="..\YSAI.Mqtt\YSAI.Mqtt.csproj" />
     <ProjectReference Include="..\YSAI.Opc\YSAI.Opc.csproj" />
     <ProjectReference Include="..\YSAI.RabbitMQ\YSAI.RabbitMQ.csproj" />
-    <ProjectReference Include="..\YSAI.Redis\YSAI.Redis.csproj" />
-    <ProjectReference Include="..\YSAI.RelayManage\YSAI.RelayManage.csproj" />
     <ProjectReference Include="..\YSAI.S7\YSAI.S7.csproj" />
   </ItemGroup>
 

+ 2 - 3
src/YSAI.DAQ/YSAI.Unility/ByteTool.cs

@@ -1,5 +1,4 @@
-using YSAI.Log;
-using System;
+using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Text;
@@ -337,7 +336,7 @@ namespace YSAI.Unility
             }
             catch (Exception ex)
             {
-                LogHelper.Error($"Byte[] 掐头去尾异常:{ex.Message}");
+                throw new Exception($"Byte[] 掐头去尾异常:{ex.Message}");
             }
             return bytes;
         }

+ 1 - 2
src/YSAI.DAQ/YSAI.Unility/NetPortTool.cs

@@ -1,5 +1,4 @@
-using YSAI.Log;
-using System;
+using System;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.IO;

+ 13 - 0
src/YSAI.DAQ/YSAI.Unility/Properties/PublishProfiles/FolderProfile.pubxml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+https://go.microsoft.com/fwlink/?LinkID=208121.
+-->
+<Project>
+  <PropertyGroup>
+    <Configuration>Release</Configuration>
+    <Platform>Any CPU</Platform>
+    <PublishDir>bin\Release\net6.0\publish\</PublishDir>
+    <PublishProtocol>FileSystem</PublishProtocol>
+    <_TargetId>Folder</_TargetId>
+  </PropertyGroup>
+</Project>

+ 3 - 5
src/YSAI.DAQ/YSAI.Unility/YSAI.Unility.csproj

@@ -1,19 +1,17 @@
-<Project Sdk="Microsoft.NET.Sdk">
+<Project Sdk="Microsoft.NET.Sdk">
 
 	<PropertyGroup>
 		<TargetFramework>net6.0</TargetFramework>
 		<ImplicitUsings>enable</ImplicitUsings>
 		<Nullable>enable</Nullable>
+		<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
+		<Version>1.0.0.4</Version>
 	</PropertyGroup>
 
 	<ItemGroup>
 		<PackageReference Include="Microsoft.IdentityModel.Tokens" Version="6.32.1" />
 		<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
 	</ItemGroup>
-
-	<ItemGroup>
-		<ProjectReference Include="..\YSAI.Log\YSAI.Log.csproj" />
-	</ItemGroup>
 	
 	
 </Project>