2017-05-03 10 views
0

私はSpring JMSを使用してWSO2MBサーバーに接続しています。すべて正常に動作していますが、すべてのリスナーに同じIDが割り当てられます。それをユニークにするために、私はclientIdを提供しましたが、動作しません。私は名前を提供することができる他のフィールドを見つけることができません。spring jmsトピックの名前を割り当てます。

私はJMSリスナーでもidを提供しましたが、成功しませんでした。

@Bean 
@ConditionalOnProperty(name="my.listener.active", matchIfMissing = true) 
public JmsListenerContainerFactory jmsListenerContainerFactory(@Qualifier("listenerConnectionFactory") ConnectionFactory connectionFactory) throws URLSyntaxException { 
    DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); 
    factory.setConnectionFactory(connectionFactory); 
    factory.setClientId("listener"+listenerTopic); 
    if (Boolean.valueOf(listenerTopic)) { 
     factory.setSubscriptionDurable(true); 
     factory.setPubSubDomain(true); 
    } 
    return factory; 
} 

@JmsListener(destination = "${default-queue-name-to-listen}", id = "${default-queue-name-to-listen}") 
public void receiveMessage(final Message<T> message) throws JMSException { 
} 
+0

アプリケーションの再起動後に同じIDを使用する必要がありましたか?これが問題です。 "listener" + listenerTopic + System.currentTimeMillis()を追加することはできません。 –

+0

各サービスに同じ名前が必要なので、複数のインスタンスを実行していても、同じ名前を共有します。しかし、異なるサービスは別の名前を持つ必要があります – krmanish007

答えて

0

サブスクリプション名を使用することですが、接続名が一意に私の問題を解決しました

@JmsListener(
     destination = "${default-queue-name-to-listen}", 
     subscription = "${default-queue-name-to-listen}" 
    ) 
    public void receiveMessage(Message<T> message) throws JMSException {} 
0

各接続は

のために使用するJMSクライアントIDを設定しますユニークなclientID

無効org.apache.activemq.ActiveMQConnectionFactory.setClientID(文字列 クライアントID)を持っている必要があります作成された接続。これは非常に一般的に、一度に1つの接続だけを使用することができることを 注意 そのが接続

にクライアントIDを設定するには良いアイデアあなたのソリューションがorg.springframework.jms.connection.SingleConnectionFactory

+0

私はすでにclientIdを設定しています:factory.setClientId( "listener" + listenerTopic); – krmanish007

+0

はい、複数の接続を作成すると失敗しますが、SingleConnectionFactoryは1つの接続のみを作成し、SingleConnectionFactory.setClientId( "listener" + listenerTopic); –

+0

私はドッカーを使用していて、複数のインスタンスがそれぞれのインスタンスを作成するので、どのように影響するかはわかりませんが、これを試してみます。現在、私はいくつかのサーバーの問題を抱えているので、一度解決したら、これを試してみます。ありがとう – krmanish007

関連する問題