Apache NiFi 使用我自己的 ID 创建进程组
Apache NiFi Create Process Group with my own ID
背景
根据 NiFi API 文档,id
是创建进程组请求中的可选字段:
POST /process-groups/{id}/process-groups
{
"revision": {
"version" : 0
},
"id" : "8a698dd8-7947-43fd-8bdd-2d4f26ee3329",
"component": {
"name": "my-process-group-foo"
}
}
这将创建一个新的进程组作为 {id}
进程组的子进程。我假设通过传入 GUID 作为请求正文的一部分,将使用我传入的 GUID 创建生成的进程组。
通过测试,虽然我已经意识到创建的进程组由 NiFi 分配了一个 id
并且不使用我传入的 id
。
上述示例的响应(精简)
{
"revision": {
"version": 1,
},
"id": "7d47183d-0173-1000-ffff-fffff6dceb50",
"component": {
"id": "7d47183d-0173-1000-ffff-fffff6dceb50",
"parentGroupId": "348a629f-0173-1000-a243-b2203c5b8272",
"name": "my-process-group-foo"
}
}
我没有使用我要求的 ID 创建进程组,而是为其分配了一个全新的 ID。
如果我尝试将 id
添加到 component
对象中,我会收到 400 错误 Process group ID cannot be specified.
问题
有没有办法使用我指定的 id
创建进程组?
我目前正在尝试弄清楚当我在多个集群(不同的数据中心)上有相同的进程 运行 时如何从 NiFi Registry 更新版本化进程。我最初的想法是,如果我可以在所有集群上创建具有相同 id
的进程组,然后我可以让我的 CI/CD 管道创建一个版本更新请求,确信相同的 id
在所有集群上。
参考资料
简短的回答是不,你不能指定 UUID,它总是由 NiFi 分配。我相信该字段被标记为可选,因为您可以提供它而不会产生错误,但它会被忽略 - 例如当您上传模板或其他流程定义时。
背景
根据 NiFi API 文档,id
是创建进程组请求中的可选字段:
POST /process-groups/{id}/process-groups
{
"revision": {
"version" : 0
},
"id" : "8a698dd8-7947-43fd-8bdd-2d4f26ee3329",
"component": {
"name": "my-process-group-foo"
}
}
这将创建一个新的进程组作为 {id}
进程组的子进程。我假设通过传入 GUID 作为请求正文的一部分,将使用我传入的 GUID 创建生成的进程组。
通过测试,虽然我已经意识到创建的进程组由 NiFi 分配了一个 id
并且不使用我传入的 id
。
上述示例的响应(精简)
{
"revision": {
"version": 1,
},
"id": "7d47183d-0173-1000-ffff-fffff6dceb50",
"component": {
"id": "7d47183d-0173-1000-ffff-fffff6dceb50",
"parentGroupId": "348a629f-0173-1000-a243-b2203c5b8272",
"name": "my-process-group-foo"
}
}
我没有使用我要求的 ID 创建进程组,而是为其分配了一个全新的 ID。
如果我尝试将 id
添加到 component
对象中,我会收到 400 错误 Process group ID cannot be specified.
问题
有没有办法使用我指定的 id
创建进程组?
我目前正在尝试弄清楚当我在多个集群(不同的数据中心)上有相同的进程 运行 时如何从 NiFi Registry 更新版本化进程。我最初的想法是,如果我可以在所有集群上创建具有相同 id
的进程组,然后我可以让我的 CI/CD 管道创建一个版本更新请求,确信相同的 id
在所有集群上。
参考资料
简短的回答是不,你不能指定 UUID,它总是由 NiFi 分配。我相信该字段被标记为可选,因为您可以提供它而不会产生错误,但它会被忽略 - 例如当您上传模板或其他流程定义时。