At the moment if you configure a NoB within OSE like:
A network of broker on Openshift with 3 broker under 1 service.
Those broker are configured like this :
<transportConnectors> <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600" updateClusterClients="true" rebalanceClusterClients="true" updateClusterClientsOnRemove="true"> <publishedAddressPolicy> <publishedAddressPolicy publishedHostStrategy="IPADDRESS" /> </publishedAddressPolicy> </transportConnector> </transportConnectors>
And on the client side utilize:
failover:(" + openshiftService + ")?randomize=true&initialReconnectDelay=700
The rebalancing does not work properly, likely due to the openshiftService URI not being new as per this line of code.
Instead what is seen are errors like this on the broker:
Transport Connection to: tcp://10.1.5.1:46684 failed: java.io.EOFException
And this in a transacted camel route producer:
org.springframework.jms.TransactionRolledBackException: Transaction completion in doubt due to failover. Forcing rollback of TX:ID:dpl-cfg-u1-1-zp6yk-45255-1474550221616-1:361:1; nested exception is javax.jms.TransactionRolledBackException: Transaction completion in doubt due to failover. Forcing rollback of TX:ID:dpl-cfg-u1-1-zp6yk-45255-1474550221616-1:361:1
The desired behaviour is to rebalance when scaling UP or DOWN the brokers, and as well to
rebalance when a client connects or disconnects. e.g.:
If we had 6 consumer and 3 brokers at start we would have :
broker1 : - consumer1 - consumer2 broker2: - consumer3 - consumer4 broker3: - consumer5 - consumer6
And when losing consumer 6/5/4 it would automaticaly rebalance to :
broker1 : - consumer1 broker2: - consumer2 broker3: - consumer3
- is related to
-
ENTMQ-2194 updateClusterClients does not support multiple tcp / nio transports
- Closed
- relates to
-
CLOUD-2322 [AMQ] Load balancing of Prodcuer/Consumer at the startup in AMQ service is not respected
- New