activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Niranjan Rao <>
Subject How to optimize performance of multiple producers and consumers
Date Wed, 16 Jul 2014 01:27:10 GMT

We are on version 5.10 - recently migrated, but don't think my problem 
is version specific.

In short, it boils down to can I evaluate the selector information on 
producer side? I need to make decision whether this is a good time to 
place the job or not.

I have multiple producers and consumers using same queue. Producers can 
be broadly categorized as live and batch consumers.

Between the time producer sends the message and consumer responds back 
with results, the entity in question gets in "locked" state. Since the 
consumers have finite capacity as message processing takes lot of time 
(more than 5 minutes usually), I am trying to avoid locking of entities.

Our consumers already publish heartbeat on a topic which has lot of 
useful data including number of jobs they are running and capacity they 
are configured with. So I have some idea whether I can place the job or not.

The part I can not get around is selectors on the consumers. Consumers 
prioritize messages from live users as long as number of concurrently 
processed messages don't exceed the capacity defined. Batch jobs which 
produce many more messages, however get lower priority.

Given the selector, can I some how evaluate the  selector on producer 
side to check if consumer will process the the job quickly enough?

The consumer capacity is dynamic as operations team can disable some 
consumers or the traffic pattern changes. So asking consumers via hear 
beat seems to be best solution. I don't want consumers to sit idle, nor 
I want to load up the messages and lock my entities for long time. I am 
open to other ideas also



View raw message