【问题标题】:NiFi: Issues with creating and connecting RPG programmaticallyNiFi:以编程方式创建和连接 RPG 的问题
【发布时间】:2017-05-05 01:30:09
【问题描述】:

我正在尝试编写一个函数,该函数接受两个参数,nifi 实例 A 中的处理器 ID 和 nifi 实例 B 中的输入端口,并在 nifi 实例 A 中创建一个 RPG,将上述参数连接到。

现在,我是怎么做的

  1. 到 /nifi-api/process-groups//remote-process-groups 端点的 POST 以创建 RPG 并检索该 RPG 的 ID

  2. 到 /nifi-api/process-groups//connections 端点的 POST 以在处理器和输入端口之间创建连接。处理器ID 和输入端口的ID 与关系列表一起提供。

  3. 最终 PUT 到 /nifi-api/remote-process-groups/ 以启用机器之间的传输。

现在,该函数总是在步骤 2 中引发错误。对于 POST 请求会引发 409,错误为“无法找到指定的目的地”。 (虽然刷新机器 1 上的画布显示 rpg 已创建) 但是,当我之后使用相同的 rpgid 手动运行第 2 步和第 3 步时,就会发生连接。

现在,我不确定这是否是同步问题,但我想弄清楚,因为我不想将步骤 1、2 和 3 分开。有人可以指出这里的问题吗?

PS - 当从函数内部和手动调用 api 时,步骤 2 的发布消息是相同的。

【问题讨论】:

    标签: apache-nifi


    【解决方案1】:

    创建 RPG 后,它将启动一个后台线程以发现可用端口。我建议添加一个步骤来不断轮询 GET /nifi-api/remote-process-group/{id} 直​​到您期望的端口可用。完成后,您应该能够创建连接。

    【讨论】:

    • 这是否意味着等到我收到针对特定 RPG id 的 GET 的 200 响应?
    • 不,您需要检查结果以确保成功发现端口。例如,如果没有适当的权限或其他用户删除了端口,则可能无法发现 if。 RPG 将继续运行该后台,因此它始终知道可用的端口。
    • 啊,明白你的意思了。可用的 portId 存在于 GET 的响应 json 中,这让我有点困惑。
    猜你喜欢
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多