[ 
https://issues.apache.org/activemq/browse/AMQ-1928?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Bruce Snyder reopened AMQ-1928:
-------------------------------

      Assignee: Bruce Snyder  (was: Rob Davies)

This issue was originally raised by me on the mailing list as a way to limit 
the number of client connections into the broker. A variable and a condition 
was added to provide this functionality and can be used as follows:

{code}
<transportConnector name="openwire" 
uri="tcp://localhost:61616?maximumConnections=100" />
{code}

Unfortunately, when the max number of connections is exceeded, there is no 
information to indicate what happened. Below is an example of the exception 
that is thrown: 

{code}
javax.jms.JMSException: Channel was inactive for too long: 
localhost/127.0.0.1:61616
  at 
org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:62)
  at 
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1255)
  at 
org.apache.activemq.ActiveMQConnection.ensureConnectionInfoSent(ActiveMQConnection.java:1339)
  at org.apache.activemq.ActiveMQConnection.start(ActiveMQConnection.java:488)
  at ConsumerTool.run(Unknown Source)
  at ConsumerTool.main(Unknown Source)
Caused by: org.apache.activemq.transport.InactivityIOException: Channel was 
inactive for too long: localhost/127.0.0.1:61616
  at 
org.apache.activemq.transport.InactivityMonitor.oneway(InactivityMonitor.java:225)
  at 
org.apache.activemq.transport.TransportFilter.oneway(TransportFilter.java:83)
  at 
org.apache.activemq.transport.WireFormatNegotiator.oneway(WireFormatNegotiator.java:100)
  at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
  at 
org.apache.activemq.transport.ResponseCorrelator.asyncRequest(ResponseCorrelator.java:74)
  at 
org.apache.activemq.transport.ResponseCorrelator.request(ResponseCorrelator.java:79)
  at 
org.apache.activemq.ActiveMQConnection.syncSendPacket(ActiveMQConnection.java:1233)
  ... 4 more
{code}

This exception is completely generic and provides no information about why the 
failure occurred. The reason for this that the conditional block is completely 
empty: 

{code}
try {
            if (this.currentTransportCount >= this.maximumConnections) {
                throw new 
ExceededMaximumConnectionsException(maximumConnections); 
            }else {
...
{code}

Therefore I'm reopening issue in order to create a good exception for the 
failure so that users can identify the specific failure. 

> Limit the maximum number of connections to a Broker
> ---------------------------------------------------
>
>                 Key: AMQ-1928
>                 URL: https://issues.apache.org/activemq/browse/AMQ-1928
>             Project: ActiveMQ
>          Issue Type: New Feature
>    Affects Versions: 4.1.1, 4.1.2, 5.0.0, 5.1.0
>            Reporter: Rob Davies
>            Assignee: Bruce Snyder
>             Fix For: 5.2.0
>
>
> Add a property (maximumConnections) to TcpTransportSever to limit a maximum 
> number of active connections

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to