Mirror of Apache ActiveMQ Artemis
Go to file
Justin Bertram 8063110644 ARTEMIS-3638 Support MQTT 5
MQTT 5 is an OASIS standard which debuted in March 2019. It boasts
numerous improvments over its predecessor (i.e. MQTT 3.1.1) which will
benefit users. These improvements are summarized in the specification
at:
https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901293

The specification describes all the behavior necessary for a client or
server to conform. The spec is highlighted with special "normative"
conformance statements which distill the descriptions into concise
terms. The specification provides a helpful summary of all these
statements. See:
https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901292

This commit implements all of the mandatory elements from the
specification and provides tests which are identified using the
corresponding normative conformance statement. All normative
conformance statements either have an explicit test or are noted in
comments with an explanation of why an explicit test doesn't exist. See
org.apache.activemq.artemis.tests.integration.mqtt5 for all those
details.

This commit also includes documentation about how to configure
everything related to the new MQTT 5 features.
2022-02-04 09:57:15 -05:00
.github NO-JIRA: use install on examples build otherwise it needs to download remote snapshot during javadoc build, which may not exist and so fails 2022-01-20 15:55:40 +00:00
.settings ACTIVEMQ6-1 - Initial HornetQ Donation Commit 2014-11-10 10:31:25 -06:00
artemis-boot ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-cdi-client ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-cli ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-commons ARTEMIS-3638 Support MQTT 5 2022-02-04 09:57:15 -05:00
artemis-core-client ARTEMIS-3638 Support MQTT 5 2022-02-04 09:57:15 -05:00
artemis-core-client-all [maven-release-plugin] prepare for next development iteration 2021-12-14 22:50:55 -05:00
artemis-core-client-osgi [maven-release-plugin] prepare for next development iteration 2021-12-14 22:50:55 -05:00
artemis-distribution ARTEMIS-3650: simplify distribution to leverage module poms for most of work, ensure their deps are present 2022-01-26 10:09:18 +00:00
artemis-docker ARTEMIS-3420 Update Docker JVM to 11 2021-12-14 08:59:55 -05:00
artemis-dto ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-features [maven-release-plugin] prepare for next development iteration 2021-12-14 22:50:55 -05:00
artemis-hawtio ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-jakarta-client ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-jakarta-client-all [maven-release-plugin] prepare for next development iteration 2021-12-14 22:50:55 -05:00
artemis-jakarta-ra ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-jakarta-server ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-jakarta-service-extensions ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-jdbc-store ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-jms-client ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-jms-client-all [maven-release-plugin] prepare for next development iteration 2021-12-14 22:50:55 -05:00
artemis-jms-client-osgi [maven-release-plugin] prepare for next development iteration 2021-12-14 22:50:55 -05:00
artemis-jms-server ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-journal ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-junit ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-maven-plugin ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-protocols ARTEMIS-3638 Support MQTT 5 2022-02-04 09:57:15 -05:00
artemis-quorum-api ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-quorum-ri ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-ra ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-rest ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-selector ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-server ARTEMIS-3638 Support MQTT 5 2022-02-04 09:57:15 -05:00
artemis-server-osgi ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-service-extensions ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-web ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
artemis-website ARTEMIS-3650: simplify distribution to leverage module poms for most of work, ensure their deps are present 2022-01-26 10:09:18 +00:00
docs ARTEMIS-3638 Support MQTT 5 2022-02-04 09:57:15 -05:00
etc ARTEMIS-3341 update checkstyle to latest + update code 2021-06-11 12:16:04 +01:00
examples ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
integration/activemq-spring-integration ARTEMIS-3655: isolate the errorprone dependencies to its profiles, enable everywhere, fix related problems, and update to 2.10. 2022-01-26 16:32:34 +00:00
scripts NO-JIRA Update on cherry-pick-report 2022-01-24 10:33:42 -05:00
tests ARTEMIS-3638 Support MQTT 5 2022-02-04 09:57:15 -05:00
.asf.yaml NO-JIRA disable merge and squash buttons on github 2020-11-16 10:30:07 -05:00
.gitignore NO-JIRA Adding vim .swp and .swo files into .gitignore 2021-08-09 14:21:39 -04:00
.project More name changes to activemq 2014-11-19 16:01:54 -05:00
.travis.yml ARTEMIS-3420: require Java 11+, resolve some issues from doing so and tidy up some stale bits as a result 2021-11-09 11:02:51 -05:00
LICENSE ARTEMIS-565 Replace json.org with javax.json 2016-07-25 21:44:57 -04:00
NOTICE NO-JIRA Notice update to 2022 2022-01-06 15:31:01 -05:00
README.md ARTEMIS-3474 - replace whitelist with allowlist in management.xml 2021-09-16 17:19:02 -05:00
RELEASING.md NO-JIRA: enable optional modules during release, get their version updated and are tagged as such. Refresh release docs. 2021-10-20 14:38:56 +01:00
artemis_doap.rdf Update vendor to ASF 2015-05-30 08:37:28 +02:00
pom.xml ARTEMIS-3638 Support MQTT 5 2022-02-04 09:57:15 -05:00

README.md

ActiveMQ Artemis

This file describes some minimum 'stuff one needs to know' to get started coding in this project.

Source

For details about the modifying the code, building the project, running tests, IDE integration, etc. see our Hacking Guide.

Build Status

Build Status: Build Status

Building the ASYNC IO library

ActiveMQ Artemis provides two journal persistence types, NIO (which uses the Java NIO libraries), and ASYNCIO which interacts with the linux kernel libaio library. The ASYNCIO journal type should be used where possible as it is far superior in terms of performance.

ActiveMQ Artemis does not ship with the Artemis Native ASYNCIO library in the source distribution. These need to be built prior to running "mvn install", to ensure that the ASYNCIO journal type is available in the resulting build. Don't worry if you don't want to use ASYNCIO or your system does not support libaio, ActiveMQ Artemis will check at runtime to see if the required libraries and system dependencies are available, if not it will default to using NIO.

To build the ActiveMQ Artemis ASYNCIO native libraries, please follow the instructions in the artemis-native/README.

Documentation

Our documentation is always in sync with our releases at the Apache ActiveMQ Artemis website.

Or you can also look at the current main version on github.

Examples

To run an example firstly make sure you have run

$ mvn -Prelease install

If the project version has already been released then this is unnecessary.

Each individual example can be run using this command from its corresponding directory:

$ mvn verify

If you wish to run groups of examples then use this command from a parent directory (e.g. examples/features/standard):

$ mvn -Pexamples verify

Recreating the examples

If you are trying to copy the examples somewhere else and modifying them. Consider asking Maven to explicitly list all the dependencies:

# if trying to modify the 'topic' example:
cd examples/jms/topic && mvn dependency:list

Open Web Application Security Project (OWASP) Report

If you wish to generate the report for CCV dependencies, you may run it with the -Powasp profile

$ mvn -Powasp verify

The output will be under ./target/dependency-check-report.html for each sub-module.

Bugs

Issues are tracked at https://issues.apache.org/jira/projects/ARTEMIS/