Uri には小さな問題があります。次を含むUriを検証する方法がわかりません:failover、static、vm、broker、fanout、もちろん、tcp、udp、sslを含むUriをorg.apache.commons.validatorパッケージのURLValidatorで検証できます。ActiveMQ のドキュメントを見ていましたが、この問題を解決するものは見つかりませんでした。ActiveMQ に接続する前に、Uri を確認する必要があります。次に例を示します。
String url = "failover:(tcp://localhost:61616,tcp://remotehost:61616)?initialReconnectDelay=100";
UrlValidator urlValidator = new UrlValidator(UrlValidator.ALLOW_ALL_SCHEMES);
urlValidator.isValid(url);
ActiveMQConnectionFactory activemg = new ActiveMQConnectionFactory();
activemg.setBrokerURL(url);
activemg.createConnection();
BrokerURL を設定する前に Url を確認したい。Uri には問題ありません:
tcp://localhost:61616?transport.trace=false&transport.soTimeout=60000
ですが、urlValidator が厳しすぎて、次のような Uri を受け入れません:
failover:(tcp://localhost:61616, tcp://remotehost:61616)?initialReconnectDelay=100 fanout:
(static:(tcp://localhost:61616,tcp://remotehost:61616))?initialReconnectDelay=100
たぶん答えがわかりますか?;)