Zend_Queueを読んだ

http://d.hatena.ne.jp/noopable/20090212/1234388931
ここで書いた、コントローラー間のメッセージキューだが、Zend_Queueがincubatorに入っているので、少し意識して改造した方がいいかもしれないと思った。

Zend_Queueを読んだ

Zend_QueueはアマゾンのSQSを使うためのキューコンポーネントらしい。Service_Amazonの下に入れていないので、アダプタの変更で他の用途にも使えることを意識したものと思う。MLでは近いうちにドキュメントも上げてくれるって言ってた。

  • Zend_Queue - キューアダプタファクトリー。
    • コンストラクタで設定を渡すことでキューオブジェクトを作成して返す
  • Zend_Queue_Adapter - 実際にキューを扱う
    • アダプタは各種揃っていてたのもしい)
  • Zend_Queue_Message
    • メッセージのバリューオブジェクト
      • __Sleep と__Wakeupをうまく使っている。
  • Zend_Queue_Adapter_Amazon
    • アマゾンのサービスに接続して、SQSのキューを扱う
    • Zend_Queue_Adapter_Amazon::createQueue() キューを作成する。
    • その他もろもろ
  • Zend_Queue_Adapter_Array
    • もっとも単純なキューアダプタ。アダプタではあるが、メッセージは内部に保存する。

オレオレメッセージングと比較する

自作したメッセージングはコントローラー間のやり取りに使うので、メッセージクラスはリクエストオブジェクトとレスポンスオブジェクトのコンポジッションになっている。
メッセージはZend_Queue_Messageを継承してあげるだけで投入できそう。自作のキュークラスへのアダプタはキューのスプールにメソッドの名前を変更するぐらいでよさそう。
アクションヘルパーで実装しているコントローラーとの連携部分を考えると少し作業量が多くなりそうなので、ちょっとうーん・・・な。