Commit Graph

13 Commits

Author SHA1 Message Date
Endre Stølsvik 9167a79b79 StatisticsBrokerPlugin: Add feat: request destination firstMessageTimestamp
Adding a feature (STATS_FIRST_MESSAGE_TIMESTAMP) to the
StatisticsBrokerPlugin's destination-statistics for getting the
timestamp of the first message in the destination(s) being requested: If
you on the query-message set the property
StatisticsBroker.STATS_FIRST_MESSAGE_TIMESTAMP to anything (e.g. boolean
true), a long value "firstMessageTimestamp" will be added to the
statistics reply message(s). Since the reply message has JMSTimestamp
set, which is the broker's now-timestamp, you may also on the query side
calculate the age of the first message in milliseconds. The key name was
chosen since that is the name of the corresponding feature in Artemis.

This extension of the existing feature is implemented to be as
non-intrusive as possible, adding very little runtime cost if not
requested. It also seems like the runtime cost for enabling this
feature, thus finding and adding the firstMessageTimestamp, is small.

While at it, also slightly improving an existing feature
(STATS_DENOTE_END_LIST) where a reply to a destination query can be
"null terminated": After sending the relevant replies, the
StatisticsBroker also sends an empty message. This feature is relevant
if the query is a wildcard query, thus returning multiple messages: The
empty message denotes the end of the replies. However, to activate this
feature, a somewhat complicated query destination had to be constructed.
Adopting the solution for the other StatisticsBroker feature where you
may reset the broker statistics by adding a property to the query
message, this null-termination feature now /also/ checks for the
presence of this query modifier STATS_DENOTE_END_LIST as a property.
(This property based solution was thus also adopted for the present
'firstMessageTimestamp' solution, as it was found much more intuitive).

Added tests for both the STATS_FIRST_MESSAGE_TIMESTAMP query modifier,
and the improved STATS_DENOTE_END_LIST property-based query modifier.

Had to make the Topic.doBrowse(List browseList, int max) public - the
corresponding method for Queue was already public.

Made the evaluation of whether this is a StatisticsBroker-relevant
message a microscopic bit more performant (exiting faster if not
relevant): To the initial test of whether the message is relevant, which
only checked for replyTo being set, a check for 'destination.
startsWith("ActiveMQ.Statistics")' was added. Only if so, the rest of
the evaluations kick in. Also using 'string.startsWith(..)' instead of
the verbose 'string.regionMatches(..)'.

Removed an unused import on PartitionBrokerTest.java, as IntelliJ
complained about not finding it.
2022-01-25 09:45:48 +01:00
jbonofre 52a2bd446a [AMQ-7502] Remove leveldb 2021-03-25 18:54:53 +01:00
jbonofre 5f51b9c084 [AMQ-7407] Fix best target election for queue/topic partitioning 2020-02-27 22:16:46 +01:00
gtully 39047021e7 AMQ-7165 - randomize needs to be disabled to make test deterministic 2019-04-05 13:39:41 +01:00
Timothy Bish 9ef4259297 https://issues.apache.org/jira/browse/AMQ-5616
Use ConcurrentMap in declarations
2015-04-28 11:15:08 -04:00
gtully 66a689df0e fix up karaf-itests , related commits https://issues.apache.org/jira/browse/AMQ-5224 https://issues.apache.org/jira/browse/AMQ-5105 Update poms to fully load into M2E - 06bb7a2716 2014-07-28 15:30:12 +01:00
Dejan Bosanac 4da588d4fc https://issues.apache.org/jira/browse/AMQ-5105 - problem starting broker with leveldb store 2014-07-17 17:12:52 +02:00
Hiram Chirino bdb24ee7c7 Fixes AMQ-5176: Support building ActiveMQ using Java 8 JDK 2014-05-07 10:53:51 -04:00
Claus Ibsen 59af7479b2 Polished the logging 2013-10-11 11:20:22 +02:00
Hiram Chirino 25f70ad483 Implementing AMQ-4788 - Adding tests for the ZooKeeper variant of the partition broker plugin. 2013-10-08 11:09:39 -04:00
Hiram Chirino 21edf2b5bb Implementing AMQ-4788 - make sure you can configure the partition broker plugin via activemq.xml 2013-10-07 13:19:42 -04:00
Hiram Chirino f88f2803ac Implementing AMQ-4788 - Lets give preference to consumers vs producers. 2013-10-07 12:41:16 -04:00
Hiram Chirino 7c63788e1a Implementing AMQ-4788 - Add support for allowing the broker to partition client client load across a broker cluster using a partitioning config 2013-10-07 10:20:00 -04:00