EIP
Invalid Message Channel (妥当でないメッセージ·チャネル) †
要約 †
- 妥当でないメッセージは、Invalid Message Channel(妥当でないメッセージチャネル)へ
- ただし、意味的に正しくないメッセージは、アプリケーションエラーであって対象外。
詳細 †
- メッセージは、パースエラー、字句エラーまたは妥当性エラーを起こす可能性がある。
- メッセージ·チャネルは、そのチャネルのための適切なデータ型のメッセージを運ぶためのデータ型のチャネルであり、適切なデータ型のメッセージでない場合には、処理することができない。
- 処理しようとしているメッセージが有効でないことを受信者が検出したとき、チャネルにメッセージを戻すことができるが、そのメッセージはちょうどそれと同じような受信者または別のアプリケーションで再消費されたり、無視されている妥当でないメッセージは、チャネルを乱雑にし、パフォーマンスの問題を発生させることもある。
- 一方で、受信者は妥当でないメッセージを消費し、それを捨てることもできるが、検出すべきメッセージングの問題を隠す可能性がある。
- 不適切なメッセージをチャンネル外へ一掃し、これらの妥当でないメッセージが、メッセージングシステムの問題を診断するために検出することができる方法として、妥当でないメッセージチャネル(Invalid Message Channel)へメッセージを移動させる方法がある。
- アプリケーションが使用するメッセージングシステムを設計するときは、管理者は1つまたは複数の妥当でないメッセージ·チャネルを定義する必要がある。
- 不適切なメッセージを診断するため、エラー·ハンドラは、利用可能になったメッセージを検出するために、妥当でないチャネルでレシーバーを用いることができる。
- 妥当でないメッセージ·チャネルは、メッセージング用のエラーログのようなもの。
- メッセージは本質的に有効あるいは無効のどちらでもない。チャネル上で1つのレシーバーに有効であるメッセージは、そのチャネル上の他のすべての受信機のための有効であるべき。あるレシーバに有効であり、別のレシーバーでは無効といったことがあるべきではない。
- メッセージがチャネルのレシーバによって有効と見なされることを確認するのは送信者の責任である。さもなくば、レシーバは、妥当でないメッセージ·チャネルにそれらを再ルーティングすることにより、送信者のメッセージを無視する。
- ただし、メッセージが正しくとも、意味的に正しくないのは別の問題であり、メッセージエラーではなくアプリケーションエラーとなる。このようなエラーは、妥当でないメッセージではなく、メッセージングとは何の関係もない、無効なアプリケーションリクエストとして扱われるべきである。
- 妥当でないメッセージ·チャネルを監視するプロセスを持つ必要がある。
- なお、類似の概念として、デッドレターチャネルがあるが、これは、メッセージングシステムが正常に配信できないメッセージのためのものであり、目的が異なる。
- 関連パターン:コマンドメッセージ、相関識別子、データ型のチャネル、デッドレターチャネル、メッセージ、メッセージ·チャネル、メッセージシーケンス、メッセージング、サービスアクティベータ、メッセージ·ゲートウェイ、JMS