Ch10 Introduction †
ひとこと要約 †
エンドポイントのざっくり紹介。
要約 †
アプリケーションがメッセージの送受信を行うのに、どのようにメッセージングシステムとつながるのかは3章のMessage Endpointで触れたよね。
- メッセージングのAPIを使ってエンドポイントのコードを書いたり。
- 商用のミドルウェアパッケージで提供されてるツールを使えばこの辺りはほとんど書かなくてすむことも。
Send and Receive Patterns †
送信者と受信者の双方に適用出来るパターン。
- アプリケーションがメッセージングシステムとどのように関連するか、についてのもの。
- Encapslate the messaging code
- アプリケーションは他との統合で、どのようにMessagingを使ってるかは意識しないもの。
- なのでアプリケーションを統合するときには、コードの薄いレイヤーがあるべき。
- 送受信で同じデータフォーマットでやりとりしてるなら最高だけど、ほとんどそうはうまくいかない。
- Externally controlled transactions
- デフォルトでは、送信や受信はそれだけでトランザクションが閉じてる。
Message Consumer Patterns †
メッセージの送ることは、メッセージを作りさえすればあとは簡単。
- 一方、受け取るほうはいろいろと大変なので、受け取る側のパターンが色いろある。
この本の導入部で触れたサーバー側の潜在的な問題は、リクエストの量によってサーバーに負荷がかかってしまう、というもの。
多くのMessage consumer patternsは、代替案として対になっている。
- 単一のアプリケーションは代替案が混在したエンドポイントを持てるが、単一のエンドポイントはどれか1つの案しか実装できない。
- Synchronous or asynchronous consumer
- Event-Driven Consumerは届いたものはできるだけ早く処理されるが、一つのコンシューマーは一度に一つのメッセージしか扱わないので、コンシューマーの数に制限をかけることでメッセージの消費を抑えられる。
- Message assignment versus message grab
- Accept all messages or filter
- Subscribe while disconnected
- Synchronous or asynchronous service
- クライアントによって同期と非同期のどちらを望むかが違ったりすることもある。
- クライアントは同期的にサービスを利用したいなら直接呼び出し、非同期的にサービスを利用したいならメッセージを送る。
Message Endpoint Themes †
もう一つのこの章のテーマは、Transactional Clientを他のパターンと一緒に使うことの難しさについて。
特記事項として、EJBの一種である、JMS形式のMDB(message-driven beans)に触れる。
- WebLogic?やWebSphere?といったEJBのコンテナで提供されている。
単一のMessage Endpointに異なるパターンを組み合わせられるのを見てきた。
- 一つのパターンだけではなく、組み合わせを考えること。
- パターンを紡いで問題を解決する美しさがそこにあるのだ。
この章では、どのような選択肢があり、どのように使うのがベストなのかを説明していく。
担当者のつぶやき †