Browse Source

根据不同泛型调用不同的Service

CrazyIter 5 years ago
parent
commit
60dbfa1c38

+ 0 - 1
TEAMModelOS.SDK/Module/AzureBlob/Implements/AzureBlobDBRepository.cs

@@ -110,7 +110,6 @@ namespace TEAMModelOS.SDK.Module.AzureBlob.Implements
                 var parsedContentDisposition = ContentDispositionHeaderValue.Parse(f.ContentDisposition);
                 var parsedContentDisposition = ContentDispositionHeaderValue.Parse(f.ContentDisposition);
                 var filename = Path.Combine(parsedContentDisposition.FileName.Trim('"'));
                 var filename = Path.Combine(parsedContentDisposition.FileName.Trim('"'));
                 var blockBlob = blobContainer.GetBlockBlobReference(name);
                 var blockBlob = blobContainer.GetBlockBlobReference(name);
-
                 if (!contentTypeDefault) {
                 if (!contentTypeDefault) {
                     ContentTypeDict.dict.TryGetValue(fileext, out string content_type);
                     ContentTypeDict.dict.TryGetValue(fileext, out string content_type);
                     if (!string.IsNullOrEmpty(content_type))
                     if (!string.IsNullOrEmpty(content_type))

+ 13 - 7
TEAMModelOS.Service/Services/ChangeFeed/ChangeFeedInvoke.cs

@@ -43,7 +43,7 @@ namespace TEAMModelOS.Service.Services.ChangeFeed
                         .container
                         .container
                         .GetChangeFeedProcessorBuilder<object>(CollectionName, async (changes, token) => 
                         .GetChangeFeedProcessorBuilder<object>(CollectionName, async (changes, token) => 
                         await ProcessChanges(changes,  dict[CollectionName].type , services, serviceProvider))
                         await ProcessChanges(changes,  dict[CollectionName].type , services, serviceProvider))
-                        .WithInstanceName(CollectionName)
+                        .WithInstanceName("TEAMModelOS")
                         .WithLeaseContainer(dict["AleaseContainer"].container)
                         .WithLeaseContainer(dict["AleaseContainer"].container)
                         .Build();
                         .Build();
                        changeFeedProcessor.StartAsync();
                        changeFeedProcessor.StartAsync();
@@ -54,12 +54,18 @@ namespace TEAMModelOS.Service.Services.ChangeFeed
             List<ServiceDescriptor> services, ServiceProvider serviceProvider)
             List<ServiceDescriptor> services, ServiceProvider serviceProvider)
         {
         {
             foreach (ServiceDescriptor service in services) {
             foreach (ServiceDescriptor service in services) {
-                var obj = serviceProvider.GetService(service.ServiceType);
-                MethodInfo mi = service.ServiceType.GetMethod("Processor");
-                Type t = typeof(IReadOnlyCollection<>);
-                t = t.MakeGenericType(type);
-                object bjt = JsonSerializer.Deserialize(changes.ToApiJson(), t);
-                mi.Invoke(obj, new object[] { bjt });//调用方法
+                Type[] genType=  service.ServiceType.GenericTypeArguments;
+                if (genType != null && genType.Length > 0) {
+                    if (type == genType[0]) {
+                        var obj = serviceProvider.GetService(service.ServiceType);
+                        MethodInfo mi = service.ServiceType.GetMethod("Processor");
+                        Type t = typeof(IReadOnlyCollection<>);
+                        t = t.MakeGenericType(type);
+                        object bjt = JsonSerializer.Deserialize(changes.ToApiJson(), t);
+                        //调用方法
+                        await Task.Run(() => mi.Invoke(obj, new object[] { bjt })); 
+                    }
+                }
             }
             }
         }
         }
     }
     }

+ 1 - 1
TEAMModelOS.Service/Services/ChangeFeed/IChangeFeedService.cs

@@ -8,6 +8,6 @@ namespace TEAMModelOS.Service.Services.ChangeFeed
 {
 {
     public interface IChangeFeedService<T>
     public interface IChangeFeedService<T>
     {
     {
-        Task Processor(IReadOnlyCollection<T> changes);
+        void Processor(IReadOnlyCollection<T> changes);
     }
     }
 }
 }

+ 3 - 2
TEAMModelOS.Service/Services/ChangeFeed/KnowledgeChangeFeed.cs

@@ -1,6 +1,7 @@
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Text;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using TEAMModelOS.SDK.Helper.Common.JsonHelper;
 using TEAMModelOS.SDK.Helper.Common.JsonHelper;
 using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
 using TEAMModelOS.SDK.Module.AzureCosmosDBV3;
@@ -14,10 +15,10 @@ namespace TEAMModelOS.Service.Services.ChangeFeed
         public KnowledgeChangeFeed(IAzureCosmosDBV3Repository azureCosmos) {
         public KnowledgeChangeFeed(IAzureCosmosDBV3Repository azureCosmos) {
             cosmosDBV3Repository = azureCosmos;
             cosmosDBV3Repository = azureCosmos;
         }
         }
-        public async  Task Processor(IReadOnlyCollection<Knowledge> changes)
+        public   void Processor(IReadOnlyCollection<Knowledge> changes)
         {
         {
             //List<Knowledge> s = await cosmosDBV3Repository.FindAll<Knowledge>();
             //List<Knowledge> s = await cosmosDBV3Repository.FindAll<Knowledge>();
-            Console.WriteLine(changes.ToApiJson());
+            Console.WriteLine(DateTimeOffset.Now.UtcTicks +"    "+changes.ToApiJson());
         }
         }
     }
     }
 }
 }

+ 2 - 2
TEAMModelOS.Service/Services/ChangeFeed/SyllabusVolumeChangeFeed.cs

@@ -15,9 +15,9 @@ namespace TEAMModelOS.Service.Services.ChangeFeed
         {
         {
             cosmosDBV3Repository = azureCosmos;
             cosmosDBV3Repository = azureCosmos;
         }
         }
-        public async Task Processor(IReadOnlyCollection<SyllabusVolume> changes)
+        public void Processor(IReadOnlyCollection<SyllabusVolume> changes)
         {
         {
-            Console.WriteLine(changes.ToApiJson());
+            Console.WriteLine(DateTimeOffset.Now.UtcTicks + "    "+changes.ToApiJson());
         }
         }
     }
     }
 }
 }

+ 2 - 0
TEAMModelOS/Startup.cs

@@ -122,6 +122,8 @@ namespace TEAMModelOS
             services.JwtAuth(Configuration.GetSection("JwtSetting"));
             services.JwtAuth(Configuration.GetSection("JwtSetting"));
             //注入CSRedis
             //注入CSRedis
             var csredis = new CSRedis.CSRedisClient(Configuration.GetSection("Azure:Redis:ConnectionString").Get<string>());
             var csredis = new CSRedis.CSRedisClient(Configuration.GetSection("Azure:Redis:ConnectionString").Get<string>());
+            CSRedis.CSRedisClient.Serialize = obj =>System.Text.Json.JsonSerializer.Serialize(obj);
+            CSRedis.CSRedisClient.Deserialize = (json, type) => System.Text.Json.JsonSerializer.Deserialize(json, type);
             RedisHelper.Initialization(csredis);
             RedisHelper.Initialization(csredis);
             //services.AddSingleton<PowerPointService, PowerPointService>();
             //services.AddSingleton<PowerPointService, PowerPointService>();