いくつかのトピックを含むメッセージ ブローカーと、その上で実行されているアプリケーションのセットがあります。ここで、同じトピック (できれば同じブローカー) で同じアプリケーション (QA 環境など) の新しいセットを実行したいと考えています。これを行う最善の方法は何ですか。私たちの環境は厳格な官僚主義の下にあるため、新しいブローカーを作成したり、新しいトピックのセットを作成したりするのは面倒です.
4 に答える
AFAIK EMS は、あなたが提案するようなものをサポートしていません。探しているものを取得するためのいくつかのオプションがあります。
独立した EMS サーバーを持つことは、理想的なソリューションです。これにより、本番環境で問題を引き起こすことなく、非本番環境で問題が発生する可能性があります。
同じサーバーを使用すると、環境固有のプレフィックスをすべてのキュー/トピック名に追加できます。どのプレフィックスを使用するか (qa、dev、test、prod など) には、アプリケーション レベルの設定が必要です。これにより、環境をかなり適切に分離できますが、いずれかの環境の負荷が非常に高い場合は、おそらくうまく機能しません。
トピックについては、いくつかの JMS ヘッダー プロパティとメッセージ サブスクリプションを使用して、ルーティング先の環境を決定できます。これを台無しにして両方の環境を破壊するのはかなり簡単なので、これはお勧めしません。
本番環境と QA の両方に同じミドルウェア サーバーを同時に使用することはお勧めしません (特にメッセージ ブローカー)。QA では、本番環境に影響を与えたくないロード テストとソーク テストを実行する必要があるためです。John が言及しているように、別のサーバーを使用するのが最も簡単な方法です。
QA環境で同じトピックのセットを複製することに対して、なぜこれほど厳格な官僚機構があるのか 、それはちょっと奇妙です。EMS の実動インストールのダンプを取ることはできませんか?
FWIW いくつかのメッセージ ブローカーでは、トピックとキューの作成は簡単です。たとえば、Apache ActiveMQアプリケーション開発者は、使用したいキューとトピック名を選択します。次に、適切な環境のブローカーに接続すると機能します (ただし、追加したい場合は、特定のユーザーがトピック/キューを作成できないようにセキュリティを追加できます)。官僚 :)。
余談として; エンタープライズ環境では、どのキュー/トピック名の使用を許可するかについて非常に厳格なポリシーがあるのに、Web アプリケーションでは、開発者がアプリケーションで必要な URI を自由に使用できるというのは、非常にコミカルなことだと私は常々思っています。結局のところ、どちらの場合も、それらは単なる論理名です-ミドルウェアはどちらの方法でも機能し、監査をサポートできるはずです:)
同じアプリの複数の環境に同じサーバーを使用しないと、ある環境のメッセージが別の環境に到達するクロストークが発生する可能性があります。キュー/トピックの複製は複雑ではなく、アプリを再構成するのは簡単です。
あなたが知りたいかもしれない他の概念はブリッジです (トピック/キューへのメッセージを別のトピックにコピーできます) これを使用して、1 つのトピックからの同じメッセージを 2 つの異なるキューに自動的にコピーしました。トピックで永続的なサブスクライバーを使用できることは知っていますが、それは一種のキューの目的です(IMHO)
メッセージの選択: 特定のヘッダーがある場合にのみメッセージを取得する機能。
ブリッジでメッセージの選択を行うこともできます。
この要件は、メッセージのトピック/キューまたは「サブジェクト」に修飾子として含めることで達成できるため、同じサーバー上で環境モードを DEV から TEST に分離できます。環境間のメッセージの流れは推奨されないことに注意してください。同じ EMS サーバーを使用して。
この特定の要件は、メッセージ形式、メッセージ交換パターン、サブジェクトの設計などを定義する SOA アーキテクチャの古典的なタスクである「サブジェクト命名規則」で対処する必要があります。
たとえば、件名は ..... DEV、TEST、UAT などの場合があります。