private ClientSession createSessionInternal(final String username, final String password, final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks, final boolean preAcknowledge, final int ackBatchSize) throws ActiveMQException { String name = UUIDGenerator.getInstance().generateStringUUID(); SessionContext context = createSessionChannel(name, username, password, xa, autoCommitSends, autoCommitAcks, preAcknowledge); ClientSessionInternal session = new ClientSessionImpl(this, name, username, password, xa, autoCommitSends, autoCommitAcks, preAcknowledge, serverLocator.isBlockOnAcknowledge(), serverLocator.isAutoGroup(), ackBatchSize, serverLocator.getConsumerWindowSize(), serverLocator.getConsumerMaxRate(), serverLocator.getConfirmationWindowSize(), serverLocator.getProducerWindowSize(), serverLocator.getProducerMaxRate(), serverLocator.isBlockOnNonDurableSend(), serverLocator.isBlockOnDurableSend(), serverLocator.isCacheLargeMessagesClient(), serverLocator.getMinLargeMessageSize(), serverLocator.isCompressLargeMessage(), serverLocator.getInitialMessagePacketSize(), serverLocator.getGroupID(), context, orderedExecutorFactory.getExecutor(), orderedExecutorFactory.getExecutor(), orderedExecutorFactory.getExecutor()); synchronized (sessions) { if (closed || !clientProtocolManager.isAlive()) { session.close(); return null; } sessions.add(session); } return session; }
if (connection != null && serverLocator.getAfterConnectInternalListener() != null) { serverLocator.getAfterConnectInternalListener().onConnection(this); if (serverLocator.getTopology() != null) { if (connection != null) { if (ClientSessionFactoryImpl.logger.isTraceEnabled()) { logger.trace(this + "::Subscribing Topology"); clientProtocolManager.sendSubscribeTopology(serverLocator.isClusterConnection());
@Override public boolean isClosed() { return closed || serverLocator.isClosed(); }
@Override public ClientSession createSession(final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks) throws ActiveMQException { return createSessionInternal(null, null, xa, autoCommitSends, autoCommitAcks, serverLocator.isPreAcknowledge(), serverLocator.getAckBatchSize()); }
protected SessionContext createSessionChannel(final String name, final String username, final String password, final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks, final boolean preAcknowledge) throws ActiveMQException { synchronized (createSessionLock) { return clientProtocolManager.createSessionContext(name, username, password, xa, autoCommitSends, autoCommitAcks, preAcknowledge, serverLocator.getMinLargeMessageSize(), serverLocator.getConfirmationWindowSize()); } }
nodeId = serverLocator.getNodeID(); targetLocator.setReconnectAttempts(0); targetLocator.setInitialConnectAttempts(0); targetLocator.setClientFailureCheckPeriod(clientFailureCheckPeriod); targetLocator.setConnectionTTL(connectionTTL); targetLocator.setInitialConnectAttempts(0); targetLocator.setConfirmationWindowSize(confirmationWindowSize); targetLocator.setBlockOnDurableSend(!useDuplicateDetection); targetLocator.setBlockOnNonDurableSend(!useDuplicateDetection); targetLocator.setRetryInterval(retryInterval); targetLocator.setMaxRetryInterval(maxRetryInterval); targetLocator.setRetryIntervalMultiplier(retryIntervalMultiplier); targetLocator.setMinLargeMessageSize(minLargeMessageSize); targetLocator.setProducerWindowSize(this.producerWindowSize); targetLocator.setAfterConnectionInternalListener(this); serverLocator.setProtocolManagerFactory(ActiveMQServerSideProtocolManagerFactory.getInstance(serverLocator)); targetLocator.setNodeID(nodeId); targetLocator.setClusterTransportConfiguration(serverLocator.getClusterTransportConfiguration()); targetLocator.setRetryInterval(retryInterval);
this.clientProtocolManager = serverLocator.newProtocolManager(); confirmationWindowWarning = new ConfirmationWindowWarning(serverLocator.getConfirmationWindowSize() < 0);
@Override public void notifyNodeDown(long eventTime, String nodeID) { serverLocator.notifyNodeDown(eventTime, nodeID); } }
@Override public ClientSession createSession(final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks, final boolean preAcknowledge) throws ActiveMQException { return createSessionInternal(null, null, xa, autoCommitSends, autoCommitAcks, preAcknowledge, serverLocator.getAckBatchSize()); }
@Override public void close() { if (closed) { return; } interruptConnectAndCloseAllSessions(true); serverLocator.factoryClosed(this); }
ClientSession session = sendAndConsume(sf, true); System.out.println(((ServerLocatorInternal) locator).getTopology().describe()); Thread.sleep(500); servers.get(0).crash(session);
Topology topology = locator.getTopology(); locator.close(); } catch (Exception ignored) {
private void makeSureForwardingFlowControl(int producerWindow, int... indices) throws NoSuchFieldException, IllegalAccessException { for (int i : indices) { ClusterConnectionImpl cc = (ClusterConnectionImpl) servers[i].getClusterManager().getClusterConnection("cluster" + i); Map<String, MessageFlowRecord> map = cc.getRecords(); assertEquals(1, map.size()); MessageFlowRecord record = map.entrySet().iterator().next().getValue(); Field f = record.getClass().getDeclaredField("targetLocator"); //NoSuchFieldException f.setAccessible(true); ServerLocatorInternal targetLocator = (ServerLocatorInternal) f.get(record); assertEquals(producerWindow, targetLocator.getProducerWindowSize()); } }
@Override public ClientSession createSession(final boolean autoCommitSends, final boolean autoCommitAcks) throws ActiveMQException { return createSessionInternal(null, null, false, autoCommitSends, autoCommitAcks, serverLocator.isPreAcknowledge(), serverLocator.getAckBatchSize()); }
protected SessionContext createSessionChannel(final String name, final String username, final String password, final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks, final boolean preAcknowledge) throws ActiveMQException { synchronized (createSessionLock) { return clientProtocolManager.createSessionContext(name, username, password, xa, autoCommitSends, autoCommitAcks, preAcknowledge, serverLocator.getMinLargeMessageSize(), serverLocator.getConfirmationWindowSize()); } }
this.clientProtocolManager = serverLocator.newProtocolManager(); confirmationWindowWarning = new ConfirmationWindowWarning(serverLocator.getConfirmationWindowSize() < 0);
@Override public void nodeDisconnected(RemotingConnection conn, String nodeID, String scaleDownTargetNodeID) { if (logger.isTraceEnabled()) { logger.trace("Disconnect being called on client:" + " server locator = " + serverLocator + " notifying node " + nodeID + " as down", new Exception("trace")); } serverLocator.notifyNodeDown(System.currentTimeMillis(), nodeID); closeExecutor.execute(new CloseRunnable(conn, scaleDownTargetNodeID)); }
@Override public ClientSession createSession(final boolean xa, final boolean autoCommitSends, final boolean autoCommitAcks, final boolean preAcknowledge) throws ActiveMQException { return createSessionInternal(null, null, xa, autoCommitSends, autoCommitAcks, preAcknowledge, serverLocator.getAckBatchSize()); }
@Override public void close() { if (closed) { return; } interruptConnectAndCloseAllSessions(true); serverLocator.factoryClosed(this); }
System.out.println("After failback: " + locator.getTopology().describe());