Based on the comments that you and Torsten made in the links from my first message, I had understood that for networkConnectors between brokers, you should not allow the discovery transport to perform reconnects, because it was important for the network bridge to be notified of the disconnection and reconnection. You said that that happens automatically for static discovery transports (and I see the onServiceAdd() and onServiceRemove() methods in NetworkDiscoveryConnector that would handle those events), but what's different about failover that makes the same DiscoveryListener mechanism not work?
On Thu, Sep 25, 2014 at 9:21 AM, Gary Tully <gary.tu...@gmail.com> wrote: > maxReconnectAttempts=0 relates to the use of failover only, where you use > failover to choose between a list of broker urls (typically a pair for > master slave). masterSlave sets maxReconnectAttempts=0 on the underlying > failover url. > The static discovery, which is implemented by the SimpleDiscoveryAgent can > do retries and backoff etc. > see: > > https://github.com/apache/activemq/blob/d54e0d6ab590b6a6148a5e2629c45b95d3f40eb8/activemq-client/src/main/java/org/apache/activemq/transport/discovery/simple/SimpleDiscoveryAgent.java#L42 > > The network bridge is a discovery listener, it gets told to add/remove > services (urls) that are discovered/retried. > > > On 24 September 2014 20:20, Tim Bain <tb...@alumni.duke.edu> wrote: > > > Gary, Torsten, and others have said in various places that > broker-to-broker > > networkConnectors should set maxReconnectAttempts=0 to allow reconnection > > to be handled by the network bridge. (Sources: 1 > > < > > > http://tmielke.blogspot.com/2011/09/activemq-network-bridge-to-masterslave.html > > >, > > 2 > > < > > > http://activemq.2283324.n4.nabble.com/Persistent-messages-disappearing-td4681353.html > > >, > > 3 > > < > > > http://grokbase.com/t/activemq/users/1427v9eqkf/prioritybackup-not-supported-with-masterslave > > >) > > Torsten (link 1) was talking about static: network connectors, while > Gary's > > quotes in the other two links were related to failover: (or masterslave:, > > which is just chrome on top of failover:), but if it's a requirement of > the > > network bridge that it be the one to re-establish the question, it > > shouldn't matter what the underlying transport is. > > > > It's obvious in FailoverTransport > > < > > > http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-client/5.10.0/org/apache/activemq/transport/failover/FailoverTransport.java#FailoverTransport > > > > > how maxReconnectAttempts=0 gets processed to mean "don't try to > reconnect", > > allowing the network bridge to re-establish the connection, and there are > > notes in http://activemq.apache.org/failover-transport-reference.html > > explaining that this interpretation of the value "0" was implemented in > > 5.6.0 (https://issues.apache.org/jira/browse/AMQ-3542). There's no > > similar > > code in SimpleDiscoveryAgent > > < > > > http://grepcode.com/file/repo1.maven.org/maven2/org.apache.activemq/activemq-all/5.10.0/org/apache/activemq/transport/discovery/simple/SimpleDiscoveryAgent.java#SimpleDiscoveryAgent > > > > > (which handles connection attempts for the static: transport > > <http://activemq.apache.org/static-transport-reference.html>, as I > > understand it) to interpret "-1" as "reconnect forever" and "0" as "don't > > reconnect". > > > > Is Gary's and Torsten's advice about maxReconnectAttempts not applicable > to > > static: network connectors for some reason that I'm not understanding? > Or > > should the changes Gary made in AMQ-3542 have been applied to all > protocols > > that include reconnection attempts? (Do I need to open a JIRA for this?) > > > > And a related question: when using the static: transport to establish a > > broker mesh, if we set maxReconnectAttempts=0, is there a way to perform > > exponential backoff at the network bridge, so it doesn't continually try > to > > reconnect (and spam the logs) when one broker in the mesh is offline for > a > > while? The only way I see to control exponential backoff is within the > > static: transport via the useExponentialBackOff=true option; searching > the > > source code (I'm looking at 5.8.0), I don't see any references to > > exponential backoff in any code that seems to be related to network > > bridges... > > > > Thanks, > > Tim > > > > > > -- > http://redhat.com > http://blog.garytully.com >