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

Asankha C. Perera resolved SYNAPSE-435.
---------------------------------------

    Resolution: Fixed

This issue is fixed with the new WS-Commons JMS redesign, and will be available 
with Synapse 1.3

> 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
>            Assignee: Asankha C. Perera
>            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