Hi
USE CASE:-- 1.We have one app which run in two server DP1 AND DP2 2.Both DP1 and DP2 using embedded EmbeddedActiveMQ.java API to run apache activemq artemis. 3.if i start DP1 1st then it is become live server and DP2 become backup and vice versa 4.Now i shutdown DP1 then DP2 should live and as i start DP1 it beahve as backup till DP2 not fail. 5.in this case of artemis after fail of DP1, DP2 is not behaving as live server. because after failover of DP1 , DP2 is not get activate .i am checking like this and always traped into loop nver come out from the loop. while (!jmsServer.getActiveMQServer().waitForActivation(30L,TimeUnit.SECONDS)) { Thread.sleep(100); } 6.API using for live and backup server if (isCurrentServerLive){ ReplicatedPolicyConfiguration haPolicy = new ReplicatedPolicyConfiguration(); haPolicy.setGroupName("bsm-back-up-group"); haPolicy.setInitialReplicationSyncTimeout(120000); haPolicy.setCheckForLiveServer(true); // Critical for failover detection haPolicy.setQuorumSize(1); // Minimum nodes required configuration.setHAPolicyConfiguration(haPolicy); }else{ ReplicaPolicyConfiguration haPolicy = new ReplicaPolicyConfiguration(); haPolicy.setGroupName("bsm-back-up-group"); haPolicy.setInitialReplicationSyncTimeout(120000); haPolicy.setRestartBackup(false); // Don't restart when live exists haPolicy.setAllowFailBack(true); // Allow primary to resume configuration.setHAPolicyConfiguration(haPolicy);; } 7.even listern is also not getting call , listner implemation in backup side public void registerListener(boolean isCurrentServerLive) { LOG.info("kutt registerListener "+(!isCurrentServerLive?"back going to register Listner":"live server not going to register")); if (!isCurrentServerLive) { final ActiveMQServer artemisServer = jmsServer.getActiveMQServer(); LOG.info(" registerListener done"); artemisServer.registerActivateCallback(new ActivateCallback() { @Override public void preActivate() { LOG.info(" registerListener preActivate() called"); } @Override public void deActivate() { LOG.info(" registerListener deActivate() called"); } @Override public void activationComplete() { LOG.info(" registerListener activationComplete() called"); } @Override public void activated() { LOG.info(" registerListener activated() called"); // Below changes to check if the live bus is really active. // read the server state initially see the last interval // loop of 2 times of interval // wait of interval for 1 second // read the state and see if the state changes // if there is change then without changing the live bus then restart // if there is no change then update the live server and then restart try { long busState = busData.getServerState(); int maxChecks = 10; boolean isLiveBusActive = false; synchronized (this) { while (!isLiveBusActive && (maxChecks > 0)) { wait(1000L); isLiveBusActive = (busState != busData.getServerState()); LOG.info(" listerner called now on failover with state of backup"+isLiveBusActive); maxChecks--; } } if (!isLiveBusActive) busData.setLiveServer(socket); } catch (Exception e) { LOG.info("Failed to update live server after backup server got activated", e); } LOG.info("restarting backup server before clients fail over"); try{ HornetQRunner.main(new String[]{"strat"}); }catch(Exception e){ LOG.info("faled to satrt"); } // Throwing IllegalStateException to make sure the calling old jmsserver doesn't finish it's failover // since it had been stopped and a new one has been started, throw new IllegalStateException("Need to restart instead of activation"); } }); } } i need your suggestion to make it work . and thanks in advance for your help. its very urgent our dead line is very near Thanks Niraj