250 行ぐらいの Amazon SQS 互換 API を作ってエンドポイントを公開した
- エンドポイント: http://q3-global.herokuapp.com/
- ソース: tily/q3
redis の勉強も兼ねて、redis + sinatra で 250 行ぐらいの Amazon SQS 互換 API を作ってみた。本当は 100 行ぐらいで作りたかったんだけど、色々機能を足していたら 250 行ぐらいになってしまった。
250 行なのでバリデーションをあまりしていなくて、異常系はあまり動かないけど、正常系はだいたい動くと思う。
Wiki みたいに誰でも手紙を送ったり受け取ったりできるメッセージキューシステムがあるとおもしろいだろうなと思っていてたので、認証が要らず誰でもキューを作成したり、キューに対してメッセージを送信・受信したりできるようにしてある。
heroku + redis to go に公開しているので、
http://q3-global.herokuapp.com/?Action=CreateQueue&QueueName=tily.hatenablog.com
とかやるとキューを作れるし、
http://q3-global.herokuapp.com/*/tily.hatenablog.com?Action=SendMessage&MessageBody=hello
とかやるとキューに対してメッセージを送信できるし、
http://q3-global.herokuapp.com/*/tily.hatenablog.com?Action=ReceiveMessage
とかやるとメッセージを受信できる。
基本機能の統合テストを書いたので、割とちゃんと動くと思う。メッセージを遅延させるやつ (DelaySeconds) とか、VisibilityTimeout も普通に使える。
Amazon SQS と互換しているので、Amazon SQS 互換のクライアントからなら自由にメッセージを送受信できるはず。
q3-global は何の役に立つかよく分からないので、これから使い方を考える。ローカルに redis さえ立ち上がっていれば、gem install q3 して q3 コマンドを打つだけで気軽に API を立ち上げることができるので、よかったら使ってみてください。