首页 > 解决方案 > Apache NiFi 的序列 2 或更多 SOAP 调用?

问题描述

感谢NiFi How to use InvokeHTTP Processor with SOAP,我已经能够进行 SOAP 调用。使用的策略是使用 GenerateFlowFile 处理器,并将我的内容插入到自定义内容中。该调用需要一个用户名和密码,以及另一个或两个变量,并且表达式语言巧妙地填充了它。

好的。

现在,我真正需要的是两个 SOAP 调用,其中第一个 SOAP 调用返回一个序列号,我提供给第二个调用以获取我返回的特定数据文件。我为第一个 SOAP 交互设置了一个 ProcessorGroup,这导致为序列号设置了一个流属性。

问题:GenerateFlowFile 只适用于计时器。我无法理解一种方法,我可以使用第一个 SOAP 流的结果然后为第二次调用触发适当构建的 FlowFile。

想法?我感到困惑但尚未找到解决方案的事情包括 RouteOnAttribute、RouteOnContent、MergeContent、Wait ......

标签: soapapache-nifi

解决方案


您可以使用ReplaceText接受具有正确sequenceNumber属性的传入流文件,并使用您需要的新 SOAP 主体填充流文件内容。Replacement Value属性支持表达式语言,因此您可以提供如下值:

  • 搜索值(?s)(^.*$)
  • 重置价值<xml><sequenceNumber>${sequence_number}</sequenceNumber></xml>

如果您只需要替换部分内容或维护一些现有的内容文本,则可以使用正则表达式匹配组和反向引用来识别它们。

然后,处理器的输出ReplaceText将被路由到第二个InvokeHTTP处理器以执行第二个 SOAP 调用。


推荐阅读