Azure 提醒我如何将HTTP数据拆分为并行分支,并在logic app中执行进一步的步骤?

Azure 提醒我如何将HTTP数据拆分为并行分支,并在logic app中执行进一步的步骤?,azure,azure-logic-apps,Azure,Azure Logic Apps,我有HTTP调用,它调用API并给出500条记录 对于500张唱片来说,这要花很长的时间,所以我想把它分支 在5个不同的分支中,我将分别传递100条记录以执行 一切尽在短时间内完成,建议是什么 我想创建分支,为每个分支处理100条记录,但是如何向每个分支发送100条单独的记录? 我想这样做是为了节省执行时间,我也在foreach中尝试了并发,但处理500条记录仍然需要太多时间,所以我想我可以将这些记录拆分为分支 我可以在哪里准确使用SplitOn "HTTP_2": {

我有
HTTP调用
,它调用API并
给出500条记录

对于500张唱片来说,这要花很长的时间,所以我想把它分支 在5个不同的分支中,我将分别传递100条记录以执行 一切尽在短时间内完成,建议是什么

我想
创建分支,为每个分支处理100条记录
,但是
如何向每个分支发送100条单独的记录?

我想这样做是为了节省执行时间,我也在foreach中尝试了并发,但处理500条记录仍然需要太多时间,所以我想我可以将这些记录拆分为分支

我可以在哪里准确使用
SplitOn

"HTTP_2": {
                        "inputs": {
                            "headers": {
                                "Authorization": "@{concat('Bearer ',variables('accesstoken'))}",
                                "Ocp-Apim-Subscription-Key": "demovalues"
                            },
                            "method": "GET",
                            "uri": "http://demo"
                        },
                        "runAfter": {
                            "Set_variable_AccessToken": [
                                "Succeeded"
                            ]
                        },
                        "type": "Http"
                    },



                     "foreach": "@body('HTTP_2')?['results']",
                        "runAfter": {
                            "Increment_variable_SkipVariable": [
                                "Succeeded"
                            ]
                        }
对于
SplitOn
属性,我尝试像这样添加-但在保存逻辑应用程序时出错

 "HTTP_2": {
                            "inputs": {
                                "headers": {
                                    "Authorization": "@{concat('Bearer ',variables('accesstoken'))}",
                                    "Ocp-Apim-Subscription-Key": "demovalues"
                                },
                                "method": "GET",
                                "uri": "http://demo"
                            },
                            "runAfter": {
                                "Set_variable_AccessToken": [
                                    "Succeeded"
                                ]
                            },
                            "type": "Http",
                            "splitOn": "@Body('HTTP_2')?['results']",
                        }
添加后获取错误-请求内容无效,可能会丢失 无法反序列化:'在的对象上找不到成员'splitOn' 键入“FlowTemplateAction”。路径 'properties.definition.actions.运行\u代码\u直到\u所有\u记录\u完成\u与\u每个\u 500 \u交互.actions.HTTP\u 2.splitOn', 第1行,位置494638'


逻辑应用程序在触发器中提供了一个
SplitOn
属性来解除阵列的对位。它适用于您希望处理消息中的数组或任何重复元素并分别处理它们的情况,如果为每个循环使用,则可以减少执行时间

关于基本用途,您可以参考官方文件:。如果您正在调用sql或Azure table等来获取记录,您可以使用两个逻辑应用程序来实现它。此wiki可以帮助您:

这种方法的优点是,每个子消息都会立即独立于其他子消息开始处理。如果一条消息在进一步处理过程中失败,它不会影响其他消息,可以在子消息级别上执行异常处理

提醒如果使用
SplitOn
属性,它将生成逻辑应用程序的单独实例并并行处理单个订单

更新:下面是我用来处理存储表实体的一个示例。两者都是HTTP触发的,父对象获取表值,然后调用子对象(使用实体体设置
内容类型
=
应用程序/json

而子进程只需在触发器下设置
“splitOn”:“@triggerBody()['value']”
提醒只能使用触发器进行设置。

下面是结果。父逻辑将获得四个实体值,子逻辑将拆分为四个平行的实体值。

从下面的图片中,您可以发现每个分支只获得一个值,然后在HTTP触发器之后,您可以添加相同的操作。


我的问题陈述是500条记录需要花费很长时间,所以我想将其分为5个不同的分支,每个分支将传递100条记录,以在更短的时间内执行所有操作,建议是什么?@Neo,我不认为可以将其分为5个分支,这就是为什么我建议您使用SplitOn。在HTTP_2中,我有一个结果数组,如何应用SpiltOn道具?body('HTTP_2')?['results']如何操作?如果使用,请使用HTTP触发器中的SplitOn。@Neo,我已更新了答案,希望这能帮助您使用SplitOn。在我的示例中,在HTTP_2或foreach内部的何处使用SplitOn?