Apache nifi REST API与APACHE NIFI的集成(从kafka获取数据-转换->;生成令牌(POST)->;POST API)

Apache nifi REST API与APACHE NIFI的集成(从kafka获取数据-转换->;生成令牌(POST)->;POST API),apache-nifi,apache-minifi,Apache Nifi,Apache Minifi,我试图在ApacheNIFI中创建一个流-情况如下 1-使用来自卡夫卡的消息(完成) 2-转换为有效的请求正文(完成) 3-保留已转换的消息 4-生成oauth2令牌(它是post api) 5-使用转换后的json作为请求体调用post api,并在头中发送令牌 我尝试过几种方法,比如将转换后的json放入缓存,并在生成令牌后获取它,但问题是我无法将令牌传递给fetchdistributedcache处理器。 我尝试将json文件放在服务器上,但getfile不接受任何输入,因此无法在获取令牌

我试图在ApacheNIFI中创建一个流-情况如下 1-使用来自卡夫卡的消息(完成) 2-转换为有效的请求正文(完成) 3-保留已转换的消息 4-生成oauth2令牌(它是post api) 5-使用转换后的json作为请求体调用post api,并在头中发送令牌

我尝试过几种方法,比如将转换后的json放入缓存,并在生成令牌后获取它,但问题是我无法将令牌传递给fetchdistributedcache处理器。 我尝试将json文件放在服务器上,但getfile不接受任何输入,因此无法在获取令牌后触发它。

如果步骤4(OAuth)将令牌作为主体返回,则InvokeHTTP中有一个选项将响应主体放在属性中而不是FF内容中,从而保留原始FF内容

因此,您可以完全跳过步骤3

使用kafka->transformations->InvokeHTTP for OAuth token(在属性中放入响应体)->UpdateAttribute(可选-假设您需要在响应体上执行一些格式化)->InvokeHTTP(OAuth token已在属性中,FF内容不变)


我相信您的身份验证令牌具有一定的生存时间价值。比如说1小时。这意味着你不应该要求每一个卡夫卡消息。因此,您可以创建一个每40分钟运行一次的迷你流(例如),请求oauth令牌并将其存储到分布式缓存中。在第4步的主流程中,请求分布式缓存并将令牌放入属性-这不会破坏您的文件内容。^这是一个很好的建议,我在下面的回答中没有想到;我的回答假设有一个很好的理由生成令牌作为流的一部分,例如需要唯一身份验证的消息tokens@daggett感谢您的建议,它正在按预期工作。实际上生成令牌api需要另一个请求主体来生成令牌。这些API是由esle的人公开的,我不能改变它。