gpt4 book ai didi

java - NiFi-1.0.0 - 加载 lua 脚本

转载 作者:IT王子 更新时间:2023-10-29 06:11:09 25 4
gpt4 key购买 nike

我有一个 NiFi 处理器,它使用 redislabs/luascript 库来加载 lua 脚本并在 redis 实例上执行它。

问题是我不知道将 lua 脚本放在哪里才能使用 luascript 库加载它。我已将它放入 nifi_proc/src/main/resources/lua/name.lua,但我得到一个 IOException。

我有一个用于连接到 Redis 的 nifi Controller 服务和一个使用该服务的处理器。

我的项目结构:
.
├── nifi-bundle-nar
│ └── 目标
├── nifi-redis_cservice
│ ├── 源码
│ └── 目标
├── nifi-redis_cservice-api
│ ├── 源码
│ └── 目标
├── nifi-redis_cservice-api-nar
│ └── 目标
├── nifi-redis_cservice-nar
│ └── 目标
├── redis 处理器
│ ├── 源码
│ └── 目标
└──目标
└── maven-shared-archive-resources

有什么想法吗?

最佳答案

您能否分享有关处理器如何与库交互的更多信息?您是否传入 InputStream、调用可执行文件等?

确保您的资源位于处理器项目的 JAR 模块中,而不是处理器的 NAR 模块或父级(包括两者)。您应该能够从处理器的 JAR 文件(例如处理器类本身)中的 Class 对象使用 getResourceAsStream("lua/name.lua")。我不确定之后您需要用它做什么,是否可以共享源代码或更多相关细节?

编辑(回复下面的评论): fromResource() 使用LuaScript's classloader要获取资源,我想知道它是否无权访问 nifi-proc 或 Controller 服务资源。看起来,除非用户需要指定脚本的位置,否则 Controller 服务应该加载到 Lua 脚本中。因此,另一种方法是使用 Controller 服务类来获取 ResourceAsStream,将整个内容读入字符串,然后使用 fromSource。而不是来自资源。

关于java - NiFi-1.0.0 - 加载 lua 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40260593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com