clojuregobgp経由のflowspecこんどはclojureで呼び出せるかやってました。clojureと銘打ってますが、grpcのコアな部分・protobufとかはjavaライブラリに依存することになります。それゆえ、調べごと・実装のほとんどすべてはjavaと格闘することになりました。ほとんど関係ありません。使ってgrpc経由で他のプロセスとつながることできました。*1clojureでブリブリ判断処理やってbgpにメッセージを送る、みたいな用途に使えそうであります。使うとjavaコードで必要なプラグインを使ってコードが生成されると書いてありまして、自分はmaven使いました。そっちのほうに親しんでいるからです。(うまくいかない場合の対応とかちょっと手抜きですすめたい場合とかになんとかしやすい)*2といいながら、pom.xmlを作るところまでで時間の多くを費やしてしまいました。protoc呼び出しのときプラグイン付きでないとgrpcのsubコードが出力されなく最初インターフェースクラスのコードに全部xxGrpcとか含まれているのかと勘違いし続けてました。javaのprotobuf部分、python/nodejsとはまた違った雰囲気の書き方でデータ構造のシリアライズ部分書くことになりましたが、今つかんでるコツはこんな感じです。データ構造インターフェースのオブジェクトクラスのインスタンスのために、newBuilder()でまずBuilderインスタンスを作る。単パラメータはsetXXX()でBuilderインスタンスに格納する*3repeatedパラメータは要素ごとにaddXXX()でBuilderインスタンスに格納するBuilderインスタンスのbuild()の戻り値をAny.pack()する。pom.xml(+パラメータ埋め込みで記述してしまっているclientコード例)はここに残しておきます。client例は値も架空の固定値でflowspecだけを考慮した例です。gobgpのデータ構造の扱いとしてもjavaの書き方としても整理の余地ありありです。package`target/grpc-gobgp-1.0-SNAPSHOT-jar-with-dependencies.jar`に必要jar全部込みで出力されます。今時点、エントリをexample.Client#mainに指定してあります。table補足ubuntu(16/18)の上で、aptでclojureインストールすると起動スクリプトはrlwrapというコマンドでラップされて起動するそうです。*4上記の実行例はaptインストールのclojureによります。ここのインストール方法だと少し動きが変わってしまいます。こっちの起動スクリプトは読み込みjarの指定をdeps.ednというファイルで指定してmavenで引っ張ってこれる仕組みになっています。動かすjavaはAmazon/Correttoを使ってます。生きてこなく、bgpを題材にしたのだから量のある経路情報引っ張ってきてガリガリリスト処理みたいなのなにかをやってみればいいのですが力不足にて*2:gradleはサービスプロセスを併用しながら動くより優れモノだと想像できるのですが。参加グループインターネット月別アーカイブスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。