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

Paul Hadrosek updated CXF-2343:
-------------------------------

    Attachment: cxf.patch

Code to replace bogus message selector.

> Improve Message Performance Under High Volume with Low Latency Consumers
> ------------------------------------------------------------------------
>
>                 Key: CXF-2343
>                 URL: https://issues.apache.org/jira/browse/CXF-2343
>             Project: CXF
>          Issue Type: Improvement
>          Components: Transports
>            Reporter: Paul Hadrosek
>         Attachments: cxf.patch
>
>
> IT organizations are on constant pressures in improving enterprise messaging 
> systems to deliver and process high volume message traffic. For example 
> financial IT organizations are continually automate, integrate and optimized 
> the transaction life cycle. The underlying messaging system must be able to 
> support extremely low latency and very high message throughput with effective 
> congestion control.     
> Message performance testing was performed to evaluate the CXF bogus message 
> selector implementation as the best approach in improving message throttling 
> in a long consumer service process with a very high JMS message traffic 
> volume.
> The intent of the bogus message selector implementation in CXF is to 
> alleviate message throttling by delegating incoming messages to under 
> performed consumer services. Testing was performed on the CXF bogus message 
> selector implementation with a commercial JMS message broker. The test 
> scenario simulated an ingest driver that produced high volume message traffic 
> with a long running CXF consumer service which forced a backlog of messages 
> in the request queue. The test results illustrated a dramatic degradation in 
> the commercial JMS message broker processing performance from 12,000 messages 
> per second to 100 messages per second (99.17% degradation of performance). 
> Also it was observed the JMS receiveTimeout parameter was set to the default 
> value of 1 which contributed to the degradation of performance. CXF was 
> modified to expose the JMS receiveTimeout parameter as a CXF feature. The 
> test scenario was rerun with a receiveTimeout set to 30 seconds which 
> improved message processing from 100 messages per second to 4,918 messages 
> per second.
> To further improve ingest message processing performance; the bogus message 
> selector implementation was replaced with a stop and start Spring JMS 
> Listener Container (DefaultMessageListenerContainer) implementation via the 
> CXF JMSContinuation class. The JMSContintuation class starts and stops the 
> Spring Container based on the maximum suspended continuations parameter. The 
> moment a stop is issued from the JMSContinuation class to the Container, no 
> new messages are allowed to be accepted by the Container until the Container 
> completes processing the suspended messages. To avoid message loss while the 
> Container is in the stop state, CXF features must support the JMS 
> acceptMessagesWhileStopping parameter. This parameter must be set to true to 
> notify the Container not to reject messages while in the stop state. The test 
> scenario was rerun using the CXF start/stop Container implementation with a 
> commercial JMS message broker. The test results demonstrated that message 
> processing performance improved from 4,918 messages per second to 8,333 
> messages per second.
> Based on the test results, I concluded that the start/stop Container 
> implementation is the recommended solution for improving message performance 
> in high JMS message traffic with low latency consumers. The start/stop 
> Container implementation improved message processing performance over the 
> bogus message selector implementation by 28%.
> See attachment for patch.

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

Reply via email to