that makes sense, any failover reconnect will use the topology information, that will be wrong. you need to have artemis not do any reconnect, initialConnectAttempts=2 and on initial connection, it will choose the first working url from the two external dns names configured. You can get the failover behaviour from camel/jms template - it will create a new connection with the provided url but it too will recreate the connection/session/consumer etc so you won't really need the artemis client to do transparent failover.
On Wed, 12 Jan 2022 at 12:55, Vilius Šumskas <vilius.sums...@rivile.lt> wrote: > > Thanks, Gary. Ticket created > https://issues.apache.org/jira/browse/ARTEMIS-3640 > > We experimented a little bit more with this and found that if we use any of > the following parameters failover fails: > retryIntervalMultiplier=2,reconnectAttempts=1000,maxRetryInterval=120000 > > However if we remove these parameters the unknown host exception is still > present but the failover starts to work (at least from our initial tests). > This doesn't make sense to me and goes against what documentation says > regarding reconnectAttempt usage in HA. > > Do you have ideas what could be going on? We are using Camel library with > Spring Framework for our messaging. My theory is that without > reconnectAttempt parameter Artemis client itself doesn't try to reconnect, > but Camel (or Spring) somehow takes addresses from URL and reconnects? > > -- > Vilius > > -----Original Message----- > From: Gary Tully <gary.tu...@gmail.com> > Sent: Wednesday, January 12, 2022 1:40 PM > To: users@activemq.apache.org > Subject: Re: Artemis cluster topology and external clients > > there is a problem here, currently there is no way to "transform" the host > information in the topology update commands. the topology is used for ha and > for loadbalancing and the client will always end up with the internal dns > name via the topology update. > > This needs an enhancement, some thing along the lines of the what we have in > 5.x via the publishAddressStrategy for Artemis - > https://issues.apache.org/jira/browse/AMQ-6392 > > The only workaround is to forsake HA, ha=false and not do reconnects, and > have the two urls (with the external dns names) be candidates for > reconnection, as it will be an initial connection. > Something above the jms connection (the application, jms template) will have > to recreate the connection on failure. > > Please open a JIRA issue to track this need, and we can peek into how > difficult it is to resolve or if there are some alternatives that can help > this use case. > > On Mon, 10 Jan 2022 at 14:21, Vilius Šumskas <vilius.sums...@rivile.lt> wrote: > > > > Hi list, > > > > does anyone have more ideas regarding the issue with external consumers > > below? > > > > -- > > Vilius > > > > -----Original Message----- > > From: Vilius Šumskas > > Sent: Friday, January 7, 2022 11:43 AM > > To: users@activemq.apache.org > > Subject: RE: Artemis cluster topology and external clients > > > > We are still getting these errors on the external clients even when > > useTopologyForLoadBalancing is disabled and using > > (tcp://external-cluster-dns-1:61616,tcp://external-cluster-dns-2:61616 > > ) > > > > org.apache.activemq.artemis.core.remoting.impl.netty.NettyConnector: > > AMQ214033: Cannot resolve host > > java.net.UnknownHostException: internal-cluster-dns-1 > > > > The error is show 2 times every time the external consumer is started. The > > connection works until we power down cluster-dns-1 machine. Then the > > consumer just stops receiving messages and never reconnects to > > cluster-dns-2 node. > > > > > > When using the same consumer internally everything works as expected. > > > > -- > > Vilius > > > > -----Original Message----- > > From: Domenico Francesco Bruscino <bruscin...@gmail.com> > > Sent: Tuesday, January 4, 2022 8:02 PM > > To: users@activemq.apache.org > > Subject: Re: Artemis cluster topology and external clients > > > > Hi Vilius, > > > > the clients should disable topology for load balancing and use static > > connectors, i.e. > > > > (tcp://external-cluster-dns-1:61616,tcp://external-cluster-dns-2:61616 > > )?ha=true&reconnectAttempts=30&useTopologyForLoadBalancing=false > > > > Regards, > > Domenico > > > > On Mon, 3 Jan 2022 at 10:00, Vilius Šumskas > > <v.sums...@advantes.tech.invalid> > > wrote: > > > > > Hello list, > > > > > > we are trying to use Artemis HA shared storage cluster which our > > > SaaS application. In addition to consumers/producers internal to > > > SaaS application itself, we also have thousands of external > > > consumers/producers which are installed on client’s premises . > > > > > > As broadcast is not possible on Google Cloud we are using static > > > discovery configuration with these connectors: > > > > > > <connectors> > > > <!-- Connector used to be announced through cluster > > > connections and notifications --> > > > <connector > > > name="artemis-master">tcp://internal-cluster-dns-1:61616</connector> > > > <connector > > > name="artemis-slave">tcp://internal-cluster-dns2:61616</connector> > > > </connectors> > > > > > > Our acceptors are also configured to use internal DNS of the hosts > > > on both cluster nodes: > > > > > > <acceptor > > > name="artemis">tcp://internal-cluster-dns-1:61616?tcpSendBufferSize= > > > 10 > > > 48576;tcpReceiveBufferSize=1048576;amqpMinLargeMessageSize=102400;pr > > > ot > > > ocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE;useEpoll=true;amqpCredit > > > s= > > > 10 > > > > > > 00;amqpLowCredits=300;amqpDuplicateDetection=true;supportAdvisory=fa > > > ls e;suppressInternalManagementObjects=false</acceptor> > > > > > > We don’t have issues with internal consumers/producers, however when > > > we try to connect external consumers (via external IP), they are > > > trying to connect via internal DNS which is probably set in the > > > cluster topology packet. > > > > > > This is probably expected and by design, but my question is how do > > > we correctly handle such case? We obviously do not want internal > > > clients to be served via external IP because external traffic is > > > expensive in the cloud and the performance would decrease > > > dramatically. Even with static discovery we would like to have a > > > possibility to expand our cluster in the future, i.e. use the topology so > > > that clients are configured automatically. > > > > > > Do we need to have a split-DNS server so that external and internal > > > clients will see different IP addresses? Or maybe it is possible to > > > have the same node serving different acceptors on different ports > > > and different DNS names? > > > > > > Any pointers are much appreciated. > > > > > > -- > > > Best Regards, > > > > > > Vilius Šumskas > > > Advantes technologies > > > IT manager > > > +370 614 75713 > > > > > >