2016-10-26 6 views
1

私はNiFiプロセッサを持っています。これは、lisスクリプトをロードしてredisインスタンスで実行するために、redislabs/luascript libを使用しています。NiFi-1.0.0 - load luaスクリプト

luascript libを使ってロードするためにluaスクリプトをどこに置くのか正確には分かりません。私はそれを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

任意のアイデア?

+0

LuaScript依存関係を引き起こすモジュールはどれですか? – mattyb

答えて

2

プロセッサがライブラリとどのようにやり取りしているかについて、より多くの情報を共有できますか?あなたはInputStreamを渡していますか?実行可能ファイルなどを呼び出していますか?

リソースがプロセッサのNARモジュールまたは親(両方を含む)ではなく、プロセッサのプロジェクトのJARモジュールにあることを確認します。プロセッサのJARファイル(プロセッサクラス自体など)にあるClassオブジェクトからgetResourceAsStream( "lua/name.lua")を使用することができます。それ以降に何をする必要があるのか​​分かりません。ソースコードやその詳細を共有することは可能でしょうか?

EDIT(以下のコメントに返信):fromResourceは()それがnifi-PROCまたはコントローラサービスリソースへのアクセス権を持っていない場合、私は疑問に思う、リソースを取得するためにLuaScript's classloaderを使用しています。ユーザーがスクリプトの場所を指定する必要がない限り、コントローラサービスはLuaスクリプトにロードされている必要があります。したがって、コントローラサービスクラスを使用してgetResourceAsStreamを使用し、文字列全体を読み取ってfromResourceの代わりにfromSourceを使用することもできます。

+0

私は実際にはnifiコントローラサービスと、そのサービスを使ってredisインスタンスに接続するnifi-procも持っています。私は/lua/myscript.luaをサービスとprocの両方のresourcesフォルダに入れました。 私は、luaスクリプトをredisにロードし、ハッシュを管理するメソッドを持っています。次に、いくつかのキー/引数を指定してluaスクリプトを実行します。 LIB luascript – bsd

+0

:ロードするhttps://github.com/RedisLabs/luascript 方法: 'プライベートLuaScriptのLUA(文字列FPATH、文字列redis_uriが)にIOException { 試み{LS = LuaScript.fromResource(FPATH、redis_uriをスロー); } catch(IOException ie){ throw ie; } return ls; } ' – bsd

関連する問題