@Override public void close() throws Exception { if (logger.isTraceEnabled()) { logger.trace("Stopping bridge " + bridge); } isClosed = true; clearBindings(); if (disconnected) { bridge.disconnect(); } bridge.stop(); bridge.getExecutor().execute(new Runnable() { @Override public void run() { try { if (disconnected) { targetLocator.cleanup(); } else { targetLocator.close(); } } catch (Exception ignored) { logger.debug(ignored.getMessage(), ignored); } } }); }
@Override public synchronized void disconnectBindings() throws Exception { logger.debug(ClusterConnectionImpl.this + " disconnect bindings"); reset = false; for (RemoteQueueBinding binding : new HashSet<>(bindings.values())) { disconnectBinding(binding.getClusterName()); } }
MessageFlowRecordImpl record = new MessageFlowRecordImpl(targetLocator, eventUID, targetNodeID, connector, queueName, queue); ClusterConnectionBridge bridge = new ClusterConnectionBridge(this, manager, targetLocator, serverLocator, initialConnectAttempts, reconnectAttempts, retryInterval, retryIntervalMultiplier, maxRetryInterval, nodeManager.getUUID(), record.getEventUID(), record.getTargetNodeID(), record.getQueueName(), record.getQueue(), executorFactory.getExecutor(), null, null, scheduledExecutor, null, useDuplicateDetection, clusterUser, clusterPassword, server, managementService.getManagementAddress(), managementService.getManagementNotificationAddress(), record, record.getConnector(), storeAndForwardPrefix); record.setBridge(bridge);
doBindingAdded(message); doBindingRemoved(message); doConsumerCreated(message); doConsumerClosed(message); doProposalReceived(message); doProposalResponseReceived(message); break; doUnProposalReceived(message); break;
@Override public synchronized void onMessage(final ClientMessage message) { if (logger.isDebugEnabled()) { logger.debug("ClusterCommunication::Flow record on " + clusterConnector + " Receiving message " + message); } try { // Reset the bindings if (message.containsProperty(PostOfficeImpl.HDR_RESET_QUEUE_DATA)) { reset = true; return; } else if (message.containsProperty(PostOfficeImpl.HDR_RESET_QUEUE_DATA_COMPLETE)) { clearDisconnectedBindings(); return; } if (!reset) { logger.debug("Notification being ignored since first reset wasn't received yet: " + message); return; } handleNotificationMessage(message); } catch (Exception e) { ActiveMQServerLogger.LOGGER.errorHandlingMessage(e); } }