Why are we getting memory limit reached exception and losing the output message in A-MQ broker ?

Solution Unverified - Updated -

Issue

  • We are doing parallel processing in camel route using below code snippet
.bean(TestGenerationServiceBean.class, "generateTestToken")
            .split(body()).parallelProcessing().convertBodyTo(String.class)
                .to("activemq:{{tokenTranslator.queue.out}}");
  • The TestGenerationServiceBean generates array of Objects which then converted to string and posted to the output queue. The message size could be in MBs. Some times we are getting the the below exception and losing the prepared message to be posted to the queue nested exception is "javax.jms.ResourceAllocationException: Usage Manager Memory Limit reached" and stopping producer.

  • We are making use of the below exception handling code "onException(Exception.class)"

                .handled(false)
                .process(...)
                .log("Message sent to logger queue");
  • We are making use transaction stated at AMQ using below attribute set in "standalone-full.xml"
<transaction-support>LocalTransaction</transaction-support>
  • How to avoid losing prepared out put message as part of the parallel processing. Do we also need to handle the memory exception seperately and post to the DLQ to handle exception in parallel processing threads?

Environment

  • Red Hat JBoss Fuse Service Works
    • 6.0.0
  • Red Hat JBoss A-MQ
    • 6.1.0

Subscriber exclusive content

A Red Hat subscription provides unlimited access to our knowledgebase of over 48,000 articles and solutions.

Current Customers and Partners

Log in for full access

Log In