250 行ぐらいの Amazon SQS 互換 API を作ってエンドポイントを公開した

redis の勉強も兼ねて、redis + sinatra250 行ぐらいの 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 を立ち上げることができるので、よかったら使ってみてください。