public NodeFailure() throws JMSException, InterruptedException { // Create a three node cluster on localhost. We configure 2 backups so in // theory every node should have a complete copy of the queue we're using. Config config = new Config(); NetworkConfig networkConfig = config.getNetworkConfig(); networkConfig.setPort(10571); networkConfig.getInterfaces().addInterface("127.0.0.1"); JoinConfig joinConfig = networkConfig.getJoin(); joinConfig.getMulticastConfig().setEnabled(false); joinConfig.getTcpIpConfig().setEnabled(true); joinConfig.getTcpIpConfig().addMember("127.0.0.1:10572"); joinConfig.getTcpIpConfig().addMember("127.0.0.1:10573"); config.getMapConfig("*").setBackupCount(2); ClusterNode node1 = new ClusterNode(config); config = new Config(); networkConfig = config.getNetworkConfig(); networkConfig.setPort(10572); networkConfig.getInterfaces().addInterface("127.0.0.1"); joinConfig = networkConfig.getJoin(); joinConfig.getMulticastConfig().setEnabled(false); joinConfig.getTcpIpConfig().setEnabled(true); joinConfig.getTcpIpConfig().addMember("127.0.0.1:10571"); joinConfig.getTcpIpConfig().addMember("127.0.0.1:10573"); config.getMapConfig("*").setBackupCount(2); ClusterNode node2 = new ClusterNode(config); config = new Config(); networkConfig = config.getNetworkConfig(); networkConfig.setPort(10573); networkConfig.getInterfaces().addInterface("127.0.0.1"); joinConfig = networkConfig.getJoin(); joinConfig.getMulticastConfig().setEnabled(false); joinConfig.getTcpIpConfig().setEnabled(true); joinConfig.getTcpIpConfig().addMember("127.0.0.1:10571"); joinConfig.getTcpIpConfig().addMember("127.0.0.1:10572"); config.getMapConfig("*").setBackupCount(2); ClusterNode node3 = new ClusterNode(config); try { // Send and receive a message across nodes. log.info("\n\n*** Example 1"); sendAndReceiveOnSingleOtherNode(node1, node3); // Queue up a couple messages and consume from two different nodes. log.info("\n\n*** Example 2"); sendAndReceiveOnMultipleNodes(node1, node2, node3); // Queue up a couple of messages, kill the producing node, and consume on // another node. log.info("\n\n*** Example 3"); sendKillAndReceiveOnMultipleNodes(node1, node2, node3); // Restart node 1 because the last example killed it. node1.restart(); // Queue up a couple of messages, kill two of the nodes, and consume on // the remaining node. log.info("\n\n*** Example 4"); sendKillTwoAndReceive(node1, node2, node3); // Restart nodes 1 and 2 because the last example killed it. node1.restart(); node2.restart(); // Queue up a couple of messages, kill two of the nodes, bring one back, // kill the other, and consume on the remaining node. log.info("\n\n*** Example 5"); sendKillTwoRestartOneKillOneAndReceive(node1, node2, node3); } catch (Throwable ex) { log.error("Unexpected exception during run!", ex); } finally { node1.shutdown(); node2.shutdown(); node3.shutdown(); } }