将来自两个不同处理器的内容和属性传递给InvokeHttp处理器



以下是我尝试做的

  1. 获取一个文件并将其编码为基数64
  2. 登录API并获取后续API调用的OAUTH令牌(由于InvokeHTTP不接受主体,因此在此之前我必须使用GenerateFlow处理器传递主体(

步骤1和2都可以互换

  1. 现在我需要登录调用中的令牌作为Header值,Base64编码的文件作为下一个Invoke Processor的主体

问题是我无法连接流1和2,因此我可以将它们带到步骤3,在步骤3中,我需要使用来自2的数据调用另一个API。GetFile和GenerateFlow都是源处理器。

以下是我的想法,以某种方式将内容转换为属性。由于文件是用base64编码的,有没有办法将内容转换为属性?我正在尝试,但内容只是随机文本,我不确定要查找什么参数或需要将其放入什么中。有没有办法将内容中的内容转换为属性,比如filecontent="所有流内容";

nifi流量快照

基本64编码内容

  1. 首先触发同一代流的两个流>gt;updateattribute(创建要在合并相关性中使用的公共属性(
  2. 做好你的工作
  3. 使用MergeContent-保留所有唯一属性-使用第一步中设置的公共属性设置correlaon

这就是我目前解决问题的方法。也许还有其他更好的方法,但这一方法奏效了。使用启动流程

GetFile>gt;Base64编码>gt;ExtractText>gt;替换文本>gt;登录>gt;继续

与流的其余部分

工作的诀窍是放置ReplaceText,这样它就可以获取整个base64编码的内容,并将其放置在一个属性中。则CCD_ 2将用登录处理器的主体替换整个内容。现在我有了登录令牌和base64编码的文件,我可以将它们发送到下一个处理器。

感谢

最新更新