DevDevデブ!!

プログラミングのこととか書きます。多分。。。

fireworqのキュー設定、ルーティング設定の保存、適用CLIを書いた

こんにちは。最近サイバーパンク2077やってて寝不足でございます。

表題まんまなんですけどね、しょぼいCLIをしたためました。

github.com

名前は「chakka(着火)」です。

fireworkは英語で花火なので、それに合わせました。

fireworqって何?

はてな社が開発してOSSで公開されてる、golang製のジョブキューです。

興味がある人はググるか、アドベントカレンダーに書いた私のqiita記事を読んでください。

qiita.com

なぜCLIを書いたのか

このfireworq、キューとか、ジョブのルーティング設定をjsonで用意して、それをhttp putでエンドポイントに投げることで設定を行います。(mysqlに直接データをinsertすることでもいけるけど、多分推奨されない方法のはず)

でも、ぶっちゃけjsonをちまちまcurlとかで投げてられないじゃないですか?

あと、設定値のjsonって普通にバージョン管理したいので、登録済みの設定を取り出して保存したり、ファイルを指定して適用したりするツールがほしいと思ったわけです。

でもまあ、専用のコマンド用意しなくても、curlとjq組み合わせてシェルスクリプト書けば終わるんですけどね。

使い方

設定値を保存する場合

chakka save --from=http://localhost:8888 --queue-file=./queues.json --routing-file=./routings.json

と実行すると、次のようなファイルができます

{"name":"default","polling_interval":200,"max_workers":20}
{"name":"test","polling_interval":200,"max_workers":20}
{"queue_name":"test","job_category":"test"}
{"queue_name":"test","job_category":"test2"}

fireworqのapiはオブジェクトの配列でデータを返すんですが、シングルラインのjsonのほうが扱いやすいので、加工してからファイルに保存してます。

設定値を適用する場合

chakka apply --to=http://localhost:8888 --queue-file=./queues.json --routing-file=./routings.json

saveで保存されたデータと同じフォーマットのものをqueue-fileとrouting-fileに指定するだけです。

感想

実は実務ではシェルスクリプトで書いちゃったので、このCLIはまだ本番投入してません。

つーか見ればわかるけど、テスト書いてないしねこれ。(テスト書けるとこも少ないけど)

そもそも書いてて思ったんだけど、fireworqの起動時にファイル読みこんで適用できるようなオプションがほしいな。