Mirror of Apache ActiveMQ
Go to file
Endre Stølsvik c81740592b 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.

(cherry picked from commit 9167a79b79)
2022-01-30 16:07:11 +01:00
activemq-all [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-amqp [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-blueprint [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-broker StatisticsBrokerPlugin: Add feat: request destination firstMessageTimestamp 2022-01-30 16:07:11 +01:00
activemq-camel [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-cf [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-client [AMQ-8412] Client-side management of max frame size 2022-01-29 07:08:34 +01:00
activemq-console [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-http [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-itests-spring31 [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-jaas [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-jdbc-store [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-jms-pool [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-kahadb-store Use B+ Tree iterator instead of DFS to find scheduled jobs to be executed 2022-01-19 19:02:09 +01:00
activemq-karaf [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-karaf-itest [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-leveldb-store [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-log4j-appender [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-mqtt [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-openwire-generator [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-openwire-legacy [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-osgi [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-partition StatisticsBrokerPlugin: Add feat: request destination firstMessageTimestamp 2022-01-30 16:07:11 +01:00
activemq-pool [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-ra [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-rar [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-run [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-runtime-config [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-shiro [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-spring [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-stomp [AMQ-8409] Fixed Unexpected \\r instead of \r in header property in incoming messages 2022-01-19 18:30:07 +01:00
activemq-tooling [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-unit-tests StatisticsBrokerPlugin: Add feat: request destination firstMessageTimestamp 2022-01-30 16:07:11 +01:00
activemq-web [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-web-console [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
activemq-web-demo [maven-release-plugin] prepare for next development iteration 2021-08-10 07:47:44 +02:00
assembly https://issues.apache.org/jira/browse/AMQ-5388 Fix user permissions in web console 2022-01-19 17:48:11 +01:00
committer-tools Add ASF header in release-validate.sh script 2020-12-02 20:18:27 +01:00
docs/img AMQ-6689 Update readme 2017-07-19 15:54:01 -04:00
etc/css NO-JIRA: remove script, moved into dist dev repo to simplify use, now under https://dist.apache.org/repos/dist/dev/activemq/activemq 2017-09-21 17:35:58 +01:00
.gitignore Ignoring .tmpBin directory 2015-08-13 15:55:21 +00:00
Jenkinsfile Use -fae for test execution on Jenkins 2021-08-23 18:24:16 +02:00
KEYS NO-JIRA: Add gpg key for jbonofre 2019-08-26 10:31:32 -04:00
LICENSE AMQ-7454 - Remove xmpp artifacts 2020-03-26 11:36:41 +00:00
NOTICE Update copyright year 2019-01-21 10:19:37 +00:00
README.md Improve README 2021-01-05 16:49:39 +01:00
doap.rdf AMQ-7447 - Update copyright years 2020-03-20 07:14:43 +00:00
pom.xml [AMQ-7351] Upgrade to Apache POM 24 2022-01-18 14:19:43 +01:00

README.md

Welcome to Apache ActiveMQ

Apache ActiveMQ is a high performance Apache 2.0 licensed Message Broker and JMS 1.1 implementation.

Getting Started

To help you get started, try the following links:

Getting Started

Building

Examples

We welcome contributions of all kinds, for details of how you can help https://activemq.apache.org/contributing.html

Please refer to the website for details of finding the issue tracker, email lists, wiki or IRC channel at https://activemq.apache.org/

Please help us make Apache ActiveMQ better - we appreciate any feedback you may have.

Enjoy!

Licensing

This software is licensed under the terms you may find in the file named "LICENSE" in this directory.

This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See https://www.wassenaar.org/ for more information.

The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.

The following provides more details on the included cryptographic software:

ActiveMQ supports the use of SSL TCP connections when used with with a JVM supporting the Java Cryptography extensions https://www.oracle.com/java/technologies/javase/javase-tech-security.html. ActiveMQ does not include these libraries itself, but is designed to use them.