mirror of https://github.com/apache/activemq.git
fix for https://issues.apache.org/jira/browse/AMQ-3486 with test case.
git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@1166216 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
acde68e3ab
commit
251dc7bb23
|
@ -87,6 +87,7 @@ import org.apache.activemq.thread.Scheduler;
|
|||
import org.apache.activemq.transaction.Synchronization;
|
||||
import org.apache.activemq.usage.MemoryUsage;
|
||||
import org.apache.activemq.util.Callback;
|
||||
import org.apache.activemq.util.JMSExceptionSupport;
|
||||
import org.apache.activemq.util.LongSequenceGenerator;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
@ -1273,6 +1274,11 @@ public class ActiveMQSession implements Session, QueueSession, TopicSession, Sta
|
|||
public TopicSubscriber createDurableSubscriber(Topic topic, String name, String messageSelector, boolean noLocal) throws JMSException {
|
||||
checkClosed();
|
||||
|
||||
if (isIndividualAcknowledge()) {
|
||||
throw JMSExceptionSupport.create("Cannot create a durable consumer for a Session in "+
|
||||
"INDIVIDUAL_ACKNOWLEDGE mode.", null);
|
||||
}
|
||||
|
||||
if (topic instanceof CustomDestination) {
|
||||
CustomDestination customDestination = (CustomDestination)topic;
|
||||
return customDestination.createDurableSubscriber(this, name, messageSelector, noLocal);
|
||||
|
|
|
@ -24,6 +24,7 @@ import javax.jms.MessageProducer;
|
|||
import javax.jms.Queue;
|
||||
import javax.jms.Session;
|
||||
import javax.jms.TextMessage;
|
||||
import javax.jms.Topic;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -153,6 +154,23 @@ public class JMSIndividualAckTest extends TestSupport {
|
|||
session.close();
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that a durable consumer cannot be created for Individual Ack mode.
|
||||
*
|
||||
* @throws JMSException
|
||||
*/
|
||||
public void testCreateDurableConsumerFails() throws JMSException {
|
||||
connection.start();
|
||||
Session session = connection.createSession(false, ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE);
|
||||
Topic dest = session.createTopic(getName());
|
||||
|
||||
try {
|
||||
session.createDurableSubscriber(dest, getName());
|
||||
fail("Should not be able to create duable subscriber.");
|
||||
} catch(Exception e) {
|
||||
}
|
||||
}
|
||||
|
||||
protected String getQueueName() {
|
||||
return getClass().getName() + "." + getName();
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue