https://issues.apache.org/jira/browse/ACTIVEMQ6-78
This commit is just adding tests I used to debug the blocked calls issue
There are some profiling parameters you can use that I added as a comment to the pom
The reason this is a separate commit is that it would be easier to validate the results of optimizations while
checking after and before any changes
To support HornetQ clients we must pass back HornetQ connector factory
names. Currently the connector factory name returned as part of node up
broadcast group (after initial client connection and client sends suscribe
topology packet) is what ever the server is configured to use in its
cluster discovery. Since the server has now been repackaged to
org.apache.activemq, the older HornetQ clients can not find the
connector factory class on it's class path. To get around this problem
the server now checks the version of the client and if the client is
HornetQ the server renames the to org.hornetq and returns before sending
to the client.
Implements a new feature for the broker whereby it may automatically
create and delete queues which are not explicitly defined through
the management API or file-based configuration when a client sends a
message to or consumes from a queue via the STOMP protocol. Note,
the destination has to be named like "jms.queue.*" to be auto-
created. The queue may subsequently be deleted when it no longer has
any messages and consumers. Auto-creation and auto-deletion can both
be turned on/off via address-setting.
A transaction manager is only required on the JMSBridge when the QoS
level is set to ONCE_AND_ONCE_ONLY. Previous to the this patch it was
also checking for a TM on the AT_MOST_ONCE QoS level. This patch also
ensures that the TM is set to null after each test run.
These tests were not as broken as on 2.3.x from the old hornetq branch where this fix originated.
However I will play safe here as I believe the race could be after the exception is raised and before the counter was added
(on ActiveMQMessageHandlerTest)
Implements a feature whereby the broker will not shutdown while there are
clients connected. A timeout can be specified so that even if there are
clients connected the broker will still shutdown after a certain time.