社内で催されたSonicのセミナを受けて

ヤバイ、Event Stream Processingが熱い。
いままで、ストリーム処理は散々やってきたけど、これはイベントに特化することで、記述力を高めた、ある種、DSLの世界。
で、クライアントサイドなESPについて、セミナ中に検討してみたw
まず、クライアントサイドなので、MQやESBなどをミドルとして用いることは避ける。セミナで説明されたESPミドルは、ESBからイベントを取得し、加工し、そしてESBに投げるという処理がメインだった。ESBをなくすということは、次の3つのコンポーネントが必要。
まず、イベントを生成するためのコンポーネントが必要となる。これを、イベントプロデューサと呼ぶことにする。次に、イベントに反応して、何らかの処理をするためのコンポーネントが必要になる。これを、イベントコンシューマと呼ぶことにする。最後に、イベントをフィルタリングしたり、複数のイベントをまとめて一つのイベントにするコンポーネントを、イベントトランスレータと呼ぶことにする。イベントトランスレータは、イベントを消費し、イベントを生成するため、イベントプロデューサとイベントコンシューマを継承する。
で、イベントプロデューサが出力したイベントストリームを、イベントトランスレータが変換し、イベントコンシューマがそれを用いて処理を行う。イベントトランスレータの出力は、フィードバックループにより、再びイベントトランスレータの変換対象となるようにする。イベントコンシューマは、イベントトランスレータと同位置に存在し、直接イベントプロデューサから生成されたイベントを読み取ることが出来る。
ここで注意が必要なのが、全てのイベントは、同じストリーム上にあるということ。
MQにしろ、ワークフローエンジンにしても、イベントごとに個別のストリームが存在するという感じで、各御家庭に後から水道を引くという感じだが、ESPは、川の流れに後からトラップを仕掛けるという感じ。あと、各々のイベントを独立して扱うのではなく、条件指定により複数のイベントを一つのイベントにまとめて扱えるようにする感じ。さらに、イベントは一つのコンポーネントが消費しても、他のコンポーネントも利用できるようにする。
なんか書いてて疲れた。とりあえず、作ってみるか。