I’m doing a bunch of performance analysis of ActiveMQ this weekend to see
if I can improve queue creation and destruction time.  The good news is
that there are a lot of areas of optimization.

It looks like one is that advisory topics are created with the default
expireMessagesPeriod (which is 30000). However, no advisory messages are
produced with TTLs.

I believe this is done in AdvisoryBroker.fireAdvisory

… looking at this code, a TTL isn’t set.  So I think that it would be a
good idea to enable expireMessagesPeriod=0 for advisory topics.

Here’s the code if you’re interested:

http://pastebin.com/i3hXDGEW

Looks like the following policyEntry works as a proof of concept.

                    <policyEntry topic=">"
                                 prioritizedMessages="false"
                                 useCache="false"
                                 maxBrowsePageSize="2147483647"
                                 expireMessagesPeriod="0">

                    </policyEntry>

(I am going to constrain it for advisory topics though).

In my test time time for GCing all my queues went from 45s to 17s.  It’s
MUCH higher than this under production load though due threading issues.

Are there any potential issues I might be missing here?

If this works I might try to submit a patch to disable expireMessagesPeriod
by default for advisory topics.

-- 

Founder/CEO Spinn3r.com
Location: *San Francisco, CA*
blog: http://burtonator.wordpress.com
… or check out my Google+ profile
<https://plus.google.com/102718274791889610666/posts>

Reply via email to