mirror of https://github.com/apache/activemq.git
Ensures that max producers on a connection includes anonymous producers in its count, based on patch from: Christopher L. Shannon (cshannon) <christopher.l.shannon@gmail.com> Merged the test into the existing ConfigTest that validates the max producers functionality.
This commit is contained in:
parent
f0ebda7ef9
commit
ec9a92f6fc
|
@ -602,7 +602,10 @@ public class TransportConnection implements Connection, Task, CommandVisitor {
|
|||
// Avoid replaying dup commands
|
||||
if (!ss.getProducerIds().contains(info.getProducerId())) {
|
||||
ActiveMQDestination destination = info.getDestination();
|
||||
if (destination != null && !AdvisorySupport.isAdvisoryTopic(destination)) {
|
||||
// Do not check for null here as it would cause the count of max producers to exclude
|
||||
// anonymous producers. The isAdvisoryTopic method checks for null so it is safe to
|
||||
// call it from here with a null Destination value.
|
||||
if (!AdvisorySupport.isAdvisoryTopic(destination)) {
|
||||
if (getProducerCount(connectionId) >= connector.getMaximumProducersAllowedPerConnection()){
|
||||
throw new IllegalStateException("Can't add producer on connection " + connectionId + ": at maximum limit: " + connector.getMaximumProducersAllowedPerConnection());
|
||||
}
|
||||
|
|
|
@ -383,6 +383,13 @@ public class ConfigTest {
|
|||
} catch (JMSException expected) {
|
||||
}
|
||||
|
||||
// Tests the anonymous producer case also counts.
|
||||
try {
|
||||
session.createProducer(null);
|
||||
fail("Should have got an exception on exceeding MAX_PRODUCERS");
|
||||
} catch (JMSException expected) {
|
||||
}
|
||||
|
||||
try {
|
||||
for (int i = 0; i < (MAX_CONSUMERS + 1); i++) {
|
||||
MessageConsumer consumer = session.createConsumer(topic);
|
||||
|
|
Loading…
Reference in New Issue