2011-08-24 6 views
2

私はwebsphere mqとJMS APIを使用してMQに接続しています。メッセージの接続とグループ化にメッセージセレクタを使用しています。Websphre接続されたクライアントを識別するMQ

実際に私の問題は、JMSクライアントが同じメッセージセレクタ(CO関係ID)で接続できるケースがあるため、クライアントがMQに接続しようとするたびに、同じメッセージセレクタを持つ他のクライアントが既に接続されているかどうか、存在する場合は接続を中止する必要があります。接続を中止します。

接続する前にWebsphere MQ接続を傍受する方法はありますか?メッセージセレクタを使用すると、接続を作成するときに定義されていないJMSのようにあなたは、接続時に直接これを行うことはできません

よろしく、 Pravin

答えて

2

:あなたが最初

接続を行うIE c = myConnectionFactory.createConnection();後で次いで

のMessageConsumer CON = mySession.createConsumer(mydestinationやmySelector)を行います。

あなたが接続するときに、キュー・マネージャを使用して、その後に使用するかを選択(またはすべてのいずれかを指定します場合でも)を知る方法がありません

一つの可能​​性は

を参照して、永続サブスクリプションを使用するかもしれません

http://download.oracle.com/javaee/1.3/api/javax/jms/TopicSession.html#createDurableSubscriber

(またはクロスドメインJMS 1.1相当)。これらは一意のclientId、加入者名、およびトピックの組み合わせによって識別され、JMS仕様が同じクライアントIDを持つ別の接続がすでに実行されている場合... JMSプロバイダが重複したIDを検出する必要があり

ことを要求されており、 InvalidClientIDExceptionをスローします。

クライアントIDがConnectionFactoryで指定されているため、あなたが望むものに近いですが、耐久性のあるPub/Subへの切り替えは必ずしも単純なオプションではありません。それを考慮する前に、「JMSクライアントが同じメッセージセレクタで接続できる場合」のアプリケーションレベルの修正があるかどうかを調べるべきです。

+0

返信ありがとうございます。実際には同じクライアントIDを使用しようとしましたが、MQは接続を許可していますので、例外もありません。 – Pravin

+0

私が覚えている限り、クライアントIDは耐久性のあるpub/subでのみチェックされ、ポイントツーポイントまたは非耐久性pub/subモードでは適用されません – strmqm

関連する問題