1
0

2 کامیت‌ها d4a0153f9b ... d0450bd4ea

نویسنده SHA1 پیام تاریخ
  luojiehua d0450bd4ea 消息队列分级并设置动态消费者 1 هفته پیش
  luojiehua 9e54b08f34 消息队列分级并设置动态消费者 1 هفته پیش
1فایلهای تغییر یافته به همراه37 افزوده شده و 4 حذف شده
  1. 37 4
      BaseDataMaintenance/maintenance/dataflow_mq.py

+ 37 - 4
BaseDataMaintenance/maintenance/dataflow_mq.py

@@ -881,6 +881,39 @@ class Dataflow_ActivteMQ_attachment(Dataflow_attachment):
 
 class Dataflow_ActivteMQ_extract(Dataflow_extract):
 
+    class DynamicProcess(Process):
+
+        def __init__(self,listener_cls,comsumer_handler,comsumer_count,queue_name):
+            self.listener_cls = listener_cls
+            self.comsumer_handler = comsumer_handler
+            self.comsumer_count = comsumer_count
+            self.queue_name = queue_name
+            super().__init__()
+
+        def run(self):
+
+            self.list_comsumer = []
+            for _i in range(self.comsumer_count):
+                listener_attachment = self.listener_cls(getConnect_activateMQ(),self.comsumer_handler ,_i)
+                createComsumer(listener_attachment,self.queue_name)
+                self.list_comsumer.append(listener_attachment)
+
+            while 1:
+                for i in range(len(self.list_comsumer)):
+                    if self.list_comsumer[i].conn.is_connected():
+                        continue
+                    else:
+                        listener = self.listener_cls(getConnect_activateMQ(),self.comsumer_handler,i)
+                        createComsumer(listener,self.queue_name)
+                        self.list_comsumer[i] = listener
+                time.sleep(5)
+
+        def terminate(self) -> None:
+            for i in range(len(self.list_comsumer)):
+                _c = self.list_comsumer[i]
+                _c.conn.disconnect()
+            super().terminate()
+
     class ExtractListener():
 
         def __init__(self,conn,_func,_idx,*args,**kwargs):
@@ -956,17 +989,17 @@ class Dataflow_ActivteMQ_extract(Dataflow_extract):
 
         # 提取listener
         if create_listener:
-            for ii in range(2):
+            for ii in range(6):
                 listener_p = Process(target=self.start_extract_listener,args=(5,self.mq_extract))
                 listener_p.start()
             for ii in range(1):
                 listener_p = Process(target=self.start_extract_listener,args=(5,self.mq_extract_fix))
                 listener_p.start()
-            for ii in range(1):
+            for ii in range(4):
                 listener_p = Process(target=self.start_extract_listener,args=(5,self.mq_extract_his))
                 listener_p.start()
-            listener_p = Process(target=dynamic_listener,args=(["dataflow_extract","dataflow_extract_fix","dataflow_extract_his"],8,self.ExtractListener,self.start_extract_listener,5))
-            listener_p.start()
+            # listener_p = Process(target=dynamic_listener,args=(["dataflow_extract","dataflow_extract_fix","dataflow_extract_his"],8,self.ExtractListener,self.start_extract_listener,5))
+            # listener_p.start()
             listener_p_ai = Thread(target=self.start_extract_AI_listener)
             listener_p_ai.start()