We have a system which uses a combination of a Queue and a Topic. We create a message on server1 and put this on a Queue. Server2 then listens on this queue (on a single consumer) and processes the messages in multiple threads each of which posts a resulting message to a Topic (multiple producers). There are multiple Servers listening (on durable subscribers) to this Topic and receiving messages to process further. The system runs fine in normal operation but the issue comes when we cancel our process. The method of cancelling is that we receive a signal to cancel (not from JMS) on each server and on receiving this signal the servers commit the Session and then close the connections. When we do this Server1 hangs on the ActiveMQSession.commit() method (more specifically ResponseCorrelator.request(Object) line 80).
A little more information on our ActiveMQ configuration: * Destination Policy: <destinationPolicy> <policyMap> <policyEntries> <policyEntry topic=">" producerFlowControl="true" memoryLimit="8mb" optimizedDispatch="true"> <dispatchPolicy> <strictOrderDispatchPolicy /> </dispatchPolicy> <pendingDurableSubscriberPolicy> <vmDurableCursor/> </pendingDurableSubscriberPolicy> </policyEntry> <policyEntry queue=">" producerFlowControl="true" memoryLimit="8mb" optimizedDispatch="true"> <pendingQueuePolicy> <vmQueueCursor/> </pendingQueuePolicy> </policyEntry> </policyEntries> </policyMap> </destinationPolicy> * One ActiveMQ broker with no network connectors * Advisory Support has been turned off The issue does not appear when flow control is turned off or when flow control is only turned on for the queues, but we cant run without flow control on both the queue and topic as the broker gets flooded with messages and the rate as which the Servers receive messages decreases massively. Has anyone seen this issue before/have any suggestions? I have included a high level overview here so that I didn't end up writing a 10-page essay but if any more detail is needed I can elaborate further. Also, if necessary I can try to create a set of test classes to demonstrate the issue. Thanks for any help in advance Colin This message should be regarded as confidential. If you have received this email in error please notify the sender and destroy it immediately. Statements of intent shall only become binding when confirmed in hard copy by an authorised signatory. The contents of this email may relate to dealings with other companies within the Detica Limited group of companies. Detica Limited is registered in England under No: 1337451. Registered offices: Surrey Research Park, Guildford, Surrey, GU2 7YP, England.