2017-01-03 23 views
2

ランタイムにJava APIを使用してmaxReconnectAttemptsなどのActiveMQトランスポートパラメータを設定できますか?ActiveMQでプログラムでトランスポートパラメータを設定する

私の場合は、基本的なフェイルオーバーURLのフェイルオーバーを提供することにより、当初のActiveMQ接続ファクトリを作成しています:

ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory("(ssl://192.168.1.112:61617,ssl://192.168.1.112:61619)?randomize=false")

しかし、後に、私は、このようなmaxReconnectAttempts、この接続ファクトリへの輸送パラメータを設定することが必要となります。出来ますか?

答えて

5

確かに、単純に次のように:

ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory("failover:(ssl://192.168.1.112:61617,ssl://192.168.1.112:61619)?randomize=false&maxReconnectAttempts=Value") 

すべてのフェイルオーバートランスポートオプションを使用すると、後でURLを変更したい場合は、connectionFactory.setBrokerURL("newURL")を呼び出すことができ、URLに

http://activemq.apache.org/failover-transport-reference.html

を設定することができ、その後、作成された新しい接続はすべて、URLの新しいパラメータで設定されます。

ConnectionFactoryの作成後に変更する場合は、urlパラメータに基づいて新しいConnectionごとにFailoverTransportの新しいインスタンスが作成され、各ConnectionがそのFailoverTransportのインスタンスを保持することに注意してください。彼の状態あなたはこのようにそれにアクセスすることができます。

((FailoverTransport) ((TransportFilter) ((TransportFilter) ((ActiveMQConnection) connection).getTransport()).getNext()).getNext()) 
       .setMaxReconnectAttempts(10); 

以上読み:なぜ、これらすべてのキャストを理解すること

org.apache.activemq.transport.TransportFilter responseCorrelator = (TransportFilter) ((ActiveMQConnection) connection).getTransport(); 
TransportFilter mutexTransport = (TransportFilter) responseCorrelator.getNext(); 
FailoverTransport failoverTransport = (FailoverTransport) mutexTransport.getNext(); 
failoverTransport.setMaxReconnectAttempts(10); 

、あなたがこのメソッドのソースコードを見てみることができます。

org.apache.activemq.transport.failover.FailoverTransportFactory.doConnect(URI) 

ここにhttps://github.com/apache/activemq/blob/master/activemq-client/src/main/java/org/apache/activemq/transport/failover/FailoverTransportFactory.java

関連する問題