activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leonardo K. Shikida" <>
Subject need advice for single queue configuration
Date Fri, 11 Sep 2015 17:33:59 GMT

I need a simple queue.

This queue will be persistent and it will use a database in the backend to
store the messages.

It will receive produced messages small in size (just one or two string
attributes) in bursts of 10~100.

It will consume messages by a pool of 100~300 message driven beans (tomee).
Each message will be consumed and will trigger a long-running job that may
take from 1 minute to 1 hour to complete. If the job fails, I want the
message to return to the queue so it can be consumed again, no matter how
many retries.

I don't want to send invalid messages to a "poisoned messages queue".

Architecture is simple. The queue will run in a single activeMQ instance
and consumers are MDBs from a single TomEE+ web application.

So, here's what I have so far


    <broker xmlns=""
brokerName="localhost" dataDirectory="${}">
                    <policyEntry topic=">" producerFlowControl="true">
limit="1000" />
                    <policyEntry queue=">" producerFlowControl="true"

            <jdbcPersistenceAdapter dataSource="#oracle-ds" />

                    <memoryUsage limit="1 gb" />
                    <storeUsage limit="100 gb" />
                    <tempUsage limit="50 gb" />

            <transportConnector name="tcp" uri="tcp://" />

    <bean id="oracle-ds" class="org.apache.commons.dbcp.BasicDataSource"
        <property name="driverClassName" value="oracle.jdbc.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:XE" />
        <property name="username" value="*****" />
        <property name="password" value="******" />
        <property name="poolPreparedStatements" value="true" />
        <property name="maxActive" value="100" />


    <Resource id="Default JMS Resource Adapter"
        BrokerXmlConfig =  broker:(tcp://localhost:61616)
        ServerUrl = tcp://localhost:61616
        ThreadPoolSize = 200

    <Resource id="MyJmsConnectionFactory"
    ResourceAdapter = Default\ JMS\ Resource\ Adapter
    PoolMaxSize = 200

    <Resource id="JobQueue" type="javax.jms.Queue" />


@MessageDriven(activationConfig = {
        @ActivationConfigProperty(propertyName = "destinationType",
propertyValue = "javax.jms.Queue"),
        @ActivationConfigProperty(propertyName = "destination",
propertyValue = "JobQueue"),
        @ActivationConfigProperty(propertyName = "maxMessagesPerSessions",
propertyValue = "1"),
        @ActivationConfigProperty(propertyName = "maxSessions",
propertyValue = "200"),
        @ActivationConfigProperty(propertyName = "acknowledgeMode",
propertyValue = "Auto-acknowledge") })


With this configuration, I am still facing some interruptions.

Sometimes, TomEE simply stops consuming the queue (once or twice per week),
so I have to restart it. I am still checking the logs for anything

I am using TomEE+ 1.6.0 stable (quite old, I know) and a standalone AMQ
5.10 stable in a linux environment and oracle JDK 7.

But I'd like some advice on how to properly set up activemq / tomee in this
scenario (that's why I am sending this email to both activemq and tomee

Thank you very much, any help is welcome.



  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message