ActiveMQ 以编程方式设置传输参数
ActiveMQ setting transport parameters programmatically
是否可以在运行时使用 java API 设置 ActiveMQ 传输参数,例如 maxReconnectAttempts
?
在我的例子中,我最初通过提供基本的故障转移来创建 ActiveMQ 连接工厂 url 故障转移:
ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory("(ssl://192.168.1.112:61617,ssl://192.168.1.112:61619)?randomize=false")
但是稍后我需要为这个连接工厂设置传输参数,例如 maxReconnectAttempts
。可能吗?
当然可以,就像这样:
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 参数为每个新连接创建一个新的 FailoverTransport 实例,并且每个连接都持有他的一个实例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)
是否可以在运行时使用 java API 设置 ActiveMQ 传输参数,例如 maxReconnectAttempts
?
在我的例子中,我最初通过提供基本的故障转移来创建 ActiveMQ 连接工厂 url 故障转移:
ActiveMQSslConnectionFactory connectionFactory = new ActiveMQSslConnectionFactory("(ssl://192.168.1.112:61617,ssl://192.168.1.112:61619)?randomize=false")
但是稍后我需要为这个连接工厂设置传输参数,例如 maxReconnectAttempts
。可能吗?
当然可以,就像这样:
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 参数为每个新连接创建一个新的 FailoverTransport 实例,并且每个连接都持有他的一个实例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)