soap - 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 ......
解决方案
您可以使用ReplaceText
接受具有正确sequenceNumber
属性的传入流文件,并使用您需要的新 SOAP 主体填充流文件内容。Replacement Value属性支持表达式语言,因此您可以提供如下值:
- 搜索值:
(?s)(^.*$)
- 重置价值:
<xml><sequenceNumber>${sequence_number}</sequenceNumber></xml>
如果您只需要替换部分内容或维护一些现有的内容文本,则可以使用正则表达式匹配组和反向引用来识别它们。
然后,处理器的输出ReplaceText
将被路由到第二个InvokeHTTP
处理器以执行第二个 SOAP 调用。
推荐阅读
- docker - 找不到 docker-compose 正在运行
- java - 如何在 sqLite 中修复:无法从 CursorWindow 读取第 0 行第 0 列。确保在从光标访问数据之前正确初始化光标
- amazon-redshift - 在 Redshift 中控制 DELETE
- asp.net-mvc - 开始的路线
- eigen - 使用混合行主要/列主要稀疏矩阵时在 Eigen 中崩溃
- javascript - 使用 JavaScript 验证的 HTML 表单
- python - Neo4j python驱动程序-遍历结果非常慢
- swift - 将自定义控制器添加为“ContentViewController”时如何增加警报类型的 UIAlertController 的宽度?
- python - 如何限制 Praw Reddit 中的第一级评论?
- webpack - 导入 webpack 包