71 lines
2.7 KiB
Markdown
71 lines
2.7 KiB
Markdown
# 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](core.md), and it communicates over the network using the "core" protocol.
|
|
|
|
## Supported Protocols
|
|
|
|
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:
|
|
|
|
- [AMQP](amqp.md)
|
|
- [OpenWire](openwire.md)
|
|
- [MQTT](mqtt.md)
|
|
- [STOMP](stomp.md)
|
|
- HornetQ
|
|
|
|
#### 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](using-jms.md) are implemented on top of the core protocol. We also provide a
|
|
[client-side JNDI implementation](using-jms.md#jndi).
|
|
|
|
The broker also ships with a [REST messaging interface](rest.md) (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](configuring-transports.md).
|
|
|
|
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
|
|
```xml
|
|
<acceptors>
|
|
<acceptor>tcp://localhost:1883?protocols=MQTT</acceptor>
|
|
</acceptors>
|
|
```
|
|
|
|
- The following example enables MQTT and AMQP on port 5672
|
|
```xml
|
|
<acceptors>
|
|
<acceptor>tcp://localhost:5672?protocols=MQTT,AMQP</acceptor>
|
|
</acceptors>
|
|
```
|
|
|
|
- The following example enables **all** protocols on `61616`:
|
|
```xml
|
|
<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`
|