The JMS transport should only accept messages when it is ready to process them
------------------------------------------------------------------------------

                 Key: SYNAPSE-435
                 URL: https://issues.apache.org/jira/browse/SYNAPSE-435
             Project: Synapse
          Issue Type: Bug
          Components: Transports
    Affects Versions: 1.2
            Reporter: Andreas Veithen
            Priority: Critical
             Fix For: 1.3


This issue was initially described by Hans Drexler on the Axis mailing list: 
http://www.nabble.com/axis2-JMS-transport-support-status--to19028249.html

While the report referred to the JMS transport version in Axis2 1.4, the 
current version in Synapse has the same problem: the JMS transport listener 
uses an asynchronous MessageListener (implemented by JMSMessageReceiver) that 
immediately hands the received message over to a worker pool. This means that 
the transport listener takes the messages as they arrive on the queue. On the 
other hand, the worker pool is configured with an unbound work queue. The 
effect is that if all threads in the pool are busy, the incoming JMS messages 
will be stored in memory and only processed later. This strategy has several 
issues:

* If the number of incoming messages is large, this can cause an out of memory 
condition.
* Since the transport listener uses auto acknowledge, the messages awaiting 
processing are lost when the server is shut down or crashes.
* The whole purpose of a message oriented middleware is to provide the 
necessary infrastructure to reliably queue messages between producers and 
consumers. Adding an additional (unreliable) in-memory queue in front of the 
consumer violates this pattern.

The JMS transport should therefore only accept messages when it is ready to 
start processing them immediately.

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


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to