Hi all,

I'm trying to understand the behaviour of ActiveMQ Artemis. I'm using Wildfly14 
with ActiveMQ Artemis version 4.0.
<subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">

In conjunction with MDBs, messages will be sent to a queue and consumed (16 
sessions for MDB). Some messages need about 10s to process, some 10m.
Initial problem was, that some messages have been stuck behind long running 
messages on consumer side. That's why I set consumerWindowSize to 0.

What I was expecting is that consumerWindowSize=0 prevents the case that short 
running messages stuck behind long running, because ActiveMQ notices that one 
MDB session is busy so the
message will be sent to other MDB session. That did not work as expected. In 
any case all the MDBs got an equal amout of messages at beginning, which led to 
same behaviour.

I checked this by using HawtIO and operation listDeliveringMessagesAsJson(). 
There I could see that each destination (I guess the MDBs) got all nearly same 
amout of messages.
[{
        "consumerName": "ServerConsumer ...,
        "elements": [ // 12 entries ]
    }, {
        "consumerName": "ServerConsumer ...,
        "elements": [ // 12 entries ]
    }, {
        "consumerName": "ServerConsumer ...,
        "elements": [ // 12 entries ]
    },
         ...

At the same time I checked the logs (TRACE level) and saw that server is 
pushing all messages to clients immediately, which, I suppose, leads to this 
behaviour. In the end I'm stuck at the same point, that
slow messages are stuck behind long running ones, because they were published 
to same MDB session.

How can I change this behaviour? The MDB session should get a message only if 
it has finished processing of one message. Not the full load at start of 
process.

Thank you!

BR
Marvin

Reply via email to