Back in version 2.17.0 we began to provide Maven artifacts for Jakarta Messaging client resources. This commit expands that support in the following ways: - Distribute a Jakarta Messaging 3.0 client with the broker (in the 'lib/client' directory alongside the JMS client. - Update documentation. - Add example using the Jakarta Messaging client. - Update Artemis CLI to use core instead of JMS as it was causing conflicts with the new Jarkarta Messaging client. - Add example to build Jarkarta Messaging version of the JCA RA for deployment into Jakarta EE 9 application servers.
2.7 KiB
Protocols and Interoperability
Apache ActiveMQ Artemis has a powerful & flexible core which provides a foundation upon which other protocols can be implemented. Each protocol implementation translates the ideas of its specific protocol onto this core.
The broker ships with a client implementation which interacts directly with this core. It uses what's called the "core" API, and it communicates over the network using the "core" protocol.
Supported Protocols & APIs
The broker has a pluggable protocol architecture. Protocol plugins come in the form of protocol modules. Each protocol module is included on the broker's class path and loaded by the broker at boot time. The broker ships with 5 protocol modules out of the box. The 5 modules offer support for the following protocols:
APIs and Other Interfaces
Although JMS and Jakarta Messaging are standardized APIs, they does not define a network protocol. The ActiveMQ Artemis JMS & Jakarta Messaging clients are implemented on top of the core protocol. We also provide a client-side JNDI implementation.
The broker also ships with a REST messaging interface (not to be confused with the REST management API provided via our integration with Jolokia).
Configuring Acceptors
In order to make use of a particular protocol, a transport must be configured with the desired protocol enabled. There is a whole section on configuring transports that can be found here.
The default configuration shipped with the ActiveMQ Artemis distribution comes with a number of acceptors already
defined, one for each of the above protocols plus a generic acceptor that supports all protocols. To enable
protocols on a particular acceptor simply add the protocols
url parameter to the acceptor url where the value is one
or more protocols (separated by commas). If the protocols
parameter is omitted from the url all protocols are
enabled.
- The following example enables only MQTT on port 1883
<acceptors>
<acceptor>tcp://localhost:1883?protocols=MQTT</acceptor>
</acceptors>
- The following example enables MQTT and AMQP on port 5672
<acceptors>
<acceptor>tcp://localhost:5672?protocols=MQTT,AMQP</acceptor>
</acceptors>
- The following example enables all protocols on
61616
:
<acceptors>
<acceptor>tcp://localhost:61616</acceptor>
</acceptors>
Here are the supported protocols and their corresponding value used in the protocols
url parameter.
Protocol | protocols value |
---|---|
Core (Artemis & HornetQ native) | CORE |
OpenWire (5.x native) | OPENWIRE |
AMQP | AMQP |
MQTT | MQTT |
STOMP | STOMP |