DevDevデブ!!

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

fireworqのAPIクライアントを作っとる

github.com

golang用のfireworqのAPIクライアント

名前は「tsutsu(筒)」

fireworqが花火なので、花火に関連する用語を使おうとして、打ち上げ筒から名前とったらいいんじゃね?って思って、何か専門用語があるんだろうと思って調べたら、そのまんま、筒、打ち上げ筒と呼ばれてるらしい。

何故つくっとるん?

fireworqを管理するTUIアプリケーションを作ろうとしてて、その過程でhttpでfireworqのAPIを叩くのが面倒くさくなって、先にAPIクライアントを作ろうと思いたったという感じ。

サポートしてるAPI

READMEのusageに書いてあるまんまなんですけど、今現在は以下をサポートしてます

  • キュー作成(設定) put /queue
  • キュー一覧参照 get /queues
  • キュー参照 get /queue/{queue_name}
  • キュー統計情報 get /queue/{queue_name}/stats
  • キュー削除 delete /queue/{queue_name}
  • ルーティング設定 put /routing/{job_category}
  • ルーティング一覧参照 get /routings
  • ルーティング参照 get /routing/{job_category}
  • ルーティング削除 delete /routing/{job_category}

ジョブの情報を取得するAPIも実装してるんですが、まだテストしてないです。

テストすんのがめんどい

コード自体はめっちゃ簡単なんですけど、テストすんのがめんどいです。

fireworqを公式のDockerImageでコンテナを立ち上げて、それに対して実際にリクエストを投げることでテストしてるんですけど、fireworqのdriverをin-memory指定で動かすと、標準のmysqlのときと挙動が異なる部分があるんですよね。(ルーティング設定で存在しないキュー名を指定してもエラーにならないとか)

かといって、mysqlをコンテナで立ち上げるのはダルいw

mysqlコンテナは起動が遅いんですよね〜。。。

今後の実装予定

TUIアプリ作っていく過程で必要になったAPIから実装していく感じにしようと思ってます。

Jobの投入とかは実装しないはず。