3

maxReconnectAttempts実行時に Java API を使用するなど、ActiveMQ トランスポート パラメータを設定することは可能ですか?

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

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

ただし、後でこの接続ファクトリにトランスポート パラメータを設定する必要がありますmaxReconnectAttempts。出来ますか?

4

1 に答える 1

6

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

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

すべてのフェールオーバー トランスポート オプションは URL で設定できます

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

後で URL を変更したい場合は、 を呼び出すことができますconnectionFactory.setBrokerURL("newURL")。その後、作成されたすべての新しい接続は、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

于 2017-01-03T08:51:47.310 に答える