I observed (as many others did) that JBoss performance drops a lot when number of messages in a queue reaches high value. In my case, about 100,000. I wonder is there a way to limit the number of messages a queue will take? When that limit is reached, the sender will be blocked?
You can check the size (depth) of a queue from the MBean server, and throttle or prevent your application from adding more messages if the size is beyond a certain limit. Go to the JMX console (http://localhost:8080/jmx-console) and figure out the object name to reference.
Externally, you really have no option but to impose some sort of interface guidelines.