# 通过内置MQ解决动作流执行超时问题

来源快照：`result_data_new_260518.json`

- 来源 ID：`1248982807711588355`
- 模块：低代码平台e-builder
- 目录：动作流 - 场景搭建
- space ID：`1157961794811633670`
- 原文链接：未提供
- 产品基线：未提供

## 正文

# 1.编写目的

我们在配置动作流时，有时因为循环次数过多，或者循环内的组件过多等原因，会出现提示：动作流超时，如下图所示

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982889360474116&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

那么遇到这种情况，我们要如何去优化一下我们的动作流配置，从而在不影响原本动作流效果的情况下，保证动作流正常执行呢？

我们可以使用内置MQ发送，内置MQ监听这两个组件来进行处理，通过MQ把循环中的内容放到另一个动作流中执行，这样就可以避免同一个动作流执行太久，最后报超时的问题了。

# 2.实现思路

如何使用MQ呢，主要通过以下两个步骤实现：

（1）

内置MQ发送：将原本循环内的组件替换为内置MQ发送组件，配置对应的发送参数，让这个组件来进行循环，此处为动作流A

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982889360474114&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

（2）

内置MQ监听：在此处监听内置MQ发送组件发送的消息，接收之后在动作流B中进行原本循环的任务，至此，我们把一个循环拆成了若干个单独执行的动作流，极大程度的避免了超时的问题

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982893714161665&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

# 3.操作步骤

## 3.1配置动作流A，内置MQ发送

在此处进行原本的动作流配置，区别在于循环节点中，我们将原本想执行的内容都去掉，替换为“内置MQ发送”组件，配置好对应的队列名称，模式，发送参数。目前内置MQ监听组件集群模式暂不可用，后续会支持，所以我们直接选择广播模式即可

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982902287319040&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

设置好模式后，一定要设置向消息队列推送的参数，参数支持动态赋值

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982893528621061&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)  
 

## 3.2配置动作流 B，内置MQ监听

  
触发组件，可以监听系统内置的MQ消息。设置触发组件时，需指定队列名称与模式，当前仅支持广播模式。  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982889262710786&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D) 

之后我们配置相应的接收参数  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982893515735044&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D) 

可以点击右上角批量添加，对应的参数可以在“内置MQ发送”组件中复制  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982897900077060&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D) 

整体动作流配置：

动作流A：  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982893714161667&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D) 

动作流B:

![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982897894588421&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)

搭建好之后，我们可以触发一下动作流A，来验证一下效果  
  
我们可以看到，按着我们的配置，生成了对应的数据  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982897894588419&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982897857142785&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)  
我们看动作流实例可以发现，动作流A执行了一次，而动作流B执行了两次，生成了两条对应的数据。这样的话，把原来冗长的循环，拆成了若干个动作流，极大程度的减轻了超时的风险。  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982893528621057&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)  
![](https://weapp.eteams.cn/papi/file/preview?fileId=1248982897900077057&type=redirect&customParam=%7B%22isExtDist%22%3Atrue%2C%22distributeId%22%3A%22%22%2C%22externalId%22%3A%22%22%2C%22appId%22%3A%22%22%7D)
