mirror of https://github.com/apache/activemq.git
Only apply timeout to the Message sends, other commands are handled separately as needed.
This commit is contained in:
parent
d694984077
commit
8824ac9fcb
|
@ -602,7 +602,7 @@ public class FailoverTransport implements CompositeTransport {
|
|||
LOG.trace("Waiting for transport to reconnect..: " + command);
|
||||
}
|
||||
long end = System.currentTimeMillis();
|
||||
if (timeout > 0 && (end - start > timeout)) {
|
||||
if (command.isMessage() && timeout > 0 && (end - start > timeout)) {
|
||||
timedout = true;
|
||||
if (LOG.isInfoEnabled()) {
|
||||
LOG.info("Failover timed out after " + (end - start) + "ms");
|
||||
|
|
|
@ -16,23 +16,36 @@
|
|||
*/
|
||||
package org.apache.activemq.transport.failover;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
|
||||
import java.net.URI;
|
||||
|
||||
import javax.jms.Connection;
|
||||
import javax.jms.JMSException;
|
||||
import javax.jms.MessageProducer;
|
||||
import javax.jms.Session;
|
||||
import javax.jms.TextMessage;
|
||||
import junit.framework.TestCase;
|
||||
|
||||
import org.apache.activemq.ActiveMQConnection;
|
||||
import org.apache.activemq.ActiveMQConnectionFactory;
|
||||
import org.apache.activemq.broker.BrokerService;
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
public class FailoverTimeoutTest extends TestCase {
|
||||
public class FailoverTimeoutTest {
|
||||
|
||||
private static final Logger LOG = LoggerFactory.getLogger(FailoverTimeoutTest.class);
|
||||
|
||||
private static final String QUEUE_NAME = "test.failovertimeout";
|
||||
BrokerService bs;
|
||||
URI tcpUri;
|
||||
|
||||
@Before
|
||||
public void setUp() throws Exception {
|
||||
bs = new BrokerService();
|
||||
bs.setUseJmx(false);
|
||||
|
@ -41,12 +54,41 @@ public class FailoverTimeoutTest extends TestCase {
|
|||
tcpUri = bs.getTransportConnectors().get(0).getConnectUri();
|
||||
}
|
||||
|
||||
@After
|
||||
public void tearDown() throws Exception {
|
||||
if (bs != null) {
|
||||
bs.stop();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTimoutDoesNotFailConnectionAttempts() throws Exception {
|
||||
bs.stop();
|
||||
long timeout = 1000;
|
||||
|
||||
long startTime = System.currentTimeMillis();
|
||||
|
||||
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory(
|
||||
"failover:(" + tcpUri + ")" +
|
||||
"?timeout=" + timeout + "&useExponentialBackOff=false" +
|
||||
"&maxReconnectAttempts=5" + "&initialReconnectDelay=1000");
|
||||
Connection connection = cf.createConnection();
|
||||
try {
|
||||
connection.start();
|
||||
fail("Should have failed to connect");
|
||||
} catch (JMSException ex) {
|
||||
LOG.info("Caught exception on call to start: {}", ex.getMessage());
|
||||
}
|
||||
|
||||
long endTime = System.currentTimeMillis();
|
||||
long duration = endTime - startTime;
|
||||
|
||||
LOG.info("Time spent waiting to connect: {} ms", duration);
|
||||
|
||||
assertTrue(duration > 3000);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testTimeout() throws Exception {
|
||||
|
||||
long timeout = 1000;
|
||||
|
@ -77,6 +119,7 @@ public class FailoverTimeoutTest extends TestCase {
|
|||
bs.stop();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateUris() throws Exception {
|
||||
|
||||
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("failover:(" + tcpUri + ")?useExponentialBackOff=false");
|
||||
|
|
Loading…
Reference in New Issue