activemq-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christopher L. Shannon (JIRA)" <>
Subject [jira] [Commented] (AMQ-5748) Add the ability to get Message Size from a Message Store
Date Wed, 20 May 2015 17:11:00 GMT


Christopher L. Shannon commented on AMQ-5748:

I think adding the ability to get a metrics bean is a good idea, either as part of this issue
or a new issue.  In my case, if I'm querying the count, I usually want to know the size as
well as other metrics about the store, so it would be nice to prevent iterating over the index
more than once.  Having a counter in DestinationMetrics is good but sometimes querying the
actual store is helpful too.  Maybe adding a method to the MessageStore interface (in addition
to the count and message size methods) to return a metrics bean could work.  I can play around
with it some and see how it goes.  

Another thing I want to look at adding after this issue is resolved is expanding the metrics
of the store to be able to query the message size for an individual consumer on a destination
and not just the overall destination which this issue does.  This will probably require iterating
over the indexes relating to the subscriptions to figure out which consumer hasn't acknowledged
the message in the store yet.

> Add the ability to get Message Size from a Message Store
> --------------------------------------------------------
>                 Key: AMQ-5748
>                 URL:
>             Project: ActiveMQ
>          Issue Type: New Feature
>          Components: Broker
>    Affects Versions: 5.11.1
>            Reporter: Christopher L. Shannon
>            Priority: Minor
> Currently, the {{MessageStore}} interface supports getting a count for messages ready
to deliver using the {{getMessageCount}} method.  It would also be very useful to be able
to retrieve the message sizes for those counts as well for keeping track of metrics.
> I've created a pull request to address this that adds a {{getMessageSize}} method that
focuses specifically on KahaDB and the Memory store.  The KahaDB store uses the same strategy
as the existing {{getMessageCount}} method, which is to iterate over the index and total up
the size of the messages.  There are unit tests to show the size calculation and a unit test
that shows a store based on version 5 working with the new version (the index is rebuilt)
> One extra issue is that the size was not being serialized to the index (it was not included
in the marshaller) so that required making a slight change and adding a new marshaller for
{{Location}} to store the size in the location index of the store.  Without this change, the
size computation would not work when the broker was restarted since the size was not serialized.
> Note that I wasn't sure the best way to handle the new marshaller and version compatibilities
so I incremented the KahaDB version from 5 to 6. If an old version of the index is loaded,
the index should be detected as corrupted and be rebuilt with the new format.  If there is
a better way to handle this upgrade let me know and the patch can certainly be updated.

This message was sent by Atlassian JIRA

View raw message