Kaynağa Gözat

bugfix-user-specified queue takes precedence over tenant queue (#769)

Solve the problem that the user queue setting does not take effect
qrfxiaoge 5 yıl önce
ebeveyn
işleme
055b071348

+ 1 - 1
escheduler-dao/src/main/java/cn/escheduler/dao/ProcessDao.java

@@ -1739,7 +1739,7 @@ public class ProcessDao extends AbstractBaseDao {
      * @param processInstanceId
      * @return
      */
-    public String queryQueueByProcessInstanceId(int processInstanceId){
+    public String queryUserQueueByProcessInstanceId(int processInstanceId){
         return userMapper.queryQueueByProcessInstanceId(processInstanceId);
     }
 

+ 3 - 2
escheduler-server/src/main/java/cn/escheduler/server/worker/runner/FetchTaskThread.java

@@ -187,8 +187,9 @@ public class FetchTaskThread implements Runnable{
                         continue;
                     }
 
-                    // set queue for process instance
-                    taskInstance.getProcessInstance().setQueue(tenant.getQueue());
+                    // set queue for process instance, user-specified queue takes precedence over tenant queue
+                    String userQueue = processDao.queryUserQueueByProcessInstanceId(taskInstance.getProcessInstanceId());
+                    taskInstance.getProcessInstance().setQueue(StringUtils.isEmpty(userQueue) ? tenant.getQueue() : userQueue);
 
                     logger.info("worker fetch taskId : {} from queue ", taskInstId);