NiFi-1.0.0 - 加载 lua 脚本

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

问题是我不知道应该把 lua 脚本放在哪个位置才能使用 luascript 库进行加载。我已将其放在 nifi_proc/src/main/resources/lua/name.lua 中,但是出现了 IOException。

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

我的项目结构: . ├── nifi-bundle-nar │ └── target ├── nifi-redis_cservice │ ├── src │ └── target ├── nifi-redis_cservice-api │ ├── src │ └── target ├── nifi-redis_cservice-api-nar │ └── target ├── nifi-redis_cservice-nar │ └── target ├── redis-processors │ ├── src │ └── target └── target └── maven-shared-archive-resources

有什么想法吗?

点赞
用户1668575
用户1668575

你能分享更多关于处理器如何与库交互的信息吗?你是传入一个 InputStream,调用一个可执行文件,还是其他的方式?

确保你的资源在处理器项目的 JAR 模块中,而不是处理器的 NAR 模块或其父模块(包括两者)。你应该能够从处理器的 JAR 文件中的一个 Class 对象(例如处理器类本身)使用 getResourceAsStream("lua/name.lua")。我不确定接下来你需要做什么,是否可能分享源代码或更多细节?

编辑(回复下面的评论):fromResource() 使用 LuaScript 类加载器 获取资源,我想知道它是否无法访问 nifi-proc 或控制器服务资源。除非用户需要指定脚本的位置,否则似乎控制器服务应该加载 Lua 脚本。因此,一个替代方案可能是使用控制器服务类来获取 getResourceAsStream,将整个内容读入字符串,并使用 fromSource 代替 fromResource。

2016-10-26 12:42:04