| = Connectors |
| |
| After broker is started, you'll want to connect your clients to it. |
| So, let's start with comparing ActiveMQ and Artemis configurations in area of client connectors. |
| In ActiveMQ terminology, they are called _transport connectors_, and the default configuration looks something like this (in `conf/activemq.xml`). |
| |
| [,xml] |
| ---- |
| <transportConnectors> |
| <transportConnector name="openwire" uri="tcp://0.0.0.0:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> |
| <transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> |
| <transportConnector name="stomp" uri="stomp://0.0.0.0:61613?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> |
| <transportConnector name="mqtt" uri="mqtt://0.0.0.0:1883?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> |
| <transportConnector name="ws" uri="ws://0.0.0.0:61614?maximumConnections=1000&wireFormat.maxFrameSize=104857600"/> |
| </transportConnectors> |
| ---- |
| |
| In Artemis, client connectors are called _acceptors_ and they are configured in `etc/broker.xml` like this |
| |
| [,xml] |
| ---- |
| <acceptors> |
| <acceptor name="artemis">tcp://0.0.0.0:61616?tcpSendBufferSize=1048576;tcpReceiveBufferSize=1048576;protocols=CORE,AMQP,STOMP,HORNETQ,MQTT,OPENWIRE</acceptor> |
| <acceptor name="amqp">tcp://0.0.0.0:5672?protocols=AMQP</acceptor> |
| <acceptor name="stomp">tcp://0.0.0.0:61613?protocols=STOMP</acceptor> |
| <acceptor name="hornetq">tcp://0.0.0.0:5445?protocols=HORNETQ,STOMP</acceptor> |
| <acceptor name="mqtt">tcp://0.0.0.0:1883?protocols=MQTT</acceptor> |
| </acceptors> |
| ---- |
| |
| As you can notice the syntax is very similar, but there are still some differences that we need to understand. |
| First, as we said earlier, there's no notion of blocking and non-blocking (nio) transport in Artemis, so you should treat everything as non-blocking. |
| Also, in Artemis the low level transport is distinct from the actual messaging protocol (like AMQP or MQTT) used on top of it. |
| One acceptor can handle multiple messaging protocols on the same port. |
| By default, all protocols are accepted on the single port, but you can restrict this using the `protocols=X,Y` uri attribute pattern as shown in the example above. |
| |
| Besides _tcp_ network protocol, Artemis support _InVm_ and _Web Socket_ transports. |
| The _InVm_ transport is similar to ActiveMQ's _vm_ transport and is used to connect clients to the embedded broker. |
| The difference is that you can use any messaging protocol on top of _InVm_ transport in Artemis, while _vm_ transport in ActiveMQ is tied to OpenWire. |
| |
| One of the advantages of using Netty for IO layer, is that Web Sockets are supported out of the box. |
| So, there's no need for the separate _ws_ transport like in ActiveMQ, the _tcp_ (Netty) acceptor in Artemis will detect Web Socket clients and handle them accordingly. |
| |
| To summarize this topic, here's a table that shows you how to migrate your ActiveMQ transport connectors to the Artemis acceptors |
| |
| |=== |
| | ActiveMQ | Artemis (options in the acceptor URL) |
| |
| | OpenWire |
| | protocols=OpenWire (version 10+) |
| |
| | NIO |
| | - |
| |
| | AMQP |
| | protocols=AMQP |
| |
| | STOMP |
| | protocols=STOMP |
| |
| | VM (OpenWire only) |
| | InVM (all protocols, peer to tcp) |
| |
| | HTTP (OpenWire-based) |
| | - |
| |
| | MQTT |
| | protocols=MQTT |
| |
| | WebSocket (STOMP and MQTT) |
| | handled by tcp (all protocols) |
| |=== |