layout: default_md title: AUTO title-class: page-title-activemq5 type: activemq5

Connectivity > Protocols > AUTO

Starting with version 5.13.0, ActiveMQ supports wire format protocol detection.   OpenWire, STOMP, AMQP, and MQTT can be automatically detected.  This allows one transport to be shared for all 4 types of clients.

Enabling AUTO over TCP

To configure ActiveMQ auto wire format detection over a TCP connection use the auto transport prefix. For example, add the following transport configuration in your XML file:

<transportConnector name="auto" uri="auto://localhost:5671"/>

Enabling AUTO over SSL

To configure ActiveMQ auto wire format detection over an SSL connection use the auto+ssl transport prefix. For example, add the following transport configuration in your XML file:

<transportConnector name="auto+ssl" uri="auto+ssl://localhost:5671"/>
  • For more details on using SSL with ActiveMQ, see the following article (How do I use SSL).

Enabling AUTO over NIO

To configure ActiveMQ auto wire format detection over an NIO TCP connection use the auto+nio transport prefix. For example, add the following transport configuration in your XML file:

<transportConnector name="auto+nio" uri="auto+nio://localhost:5671"/>

Enabling AUTO over NIO SSL

To configure ActiveMQ auto wire format detection over an NIO SSL connection use the auto+nio+ssl transport prefix. For example, add the following transport configuration in your XML file:

<transportConnector name="auto+nio+ssl" uri="auto+nio+ssl://localhost:5671"/>

Configuring AUTO Transport Options

There are some configuration options that can be set.

Parameter NameDefault ValueDescription
protocolDetectionTimeOut30000The time before a connection times out in milliseconds. This is similar to maxInactivityDuration. If a client makes a connection to but doesn't send data or enough data for the protocol to be detected then the thread will sit and wait for more data to come in over the socket. This will let the broker kill the connections if they do not complete the protocol initialization after a certain period of time. The default is 30 seconds. Set a default to <= 0 to disable this.
maxConnectionThreadPoolSizeMAX_INTThis option allows the configuration of the maximum size of the thread pool that handles connection attempts. Lowering this number can help prevent the broker from running out of threads if there are many different clients attempting to connect at the same time. By default it is turned off by setting to MAX_INT

An example that configures the transport with a maximum protocol detection time of 5 seconds:

<transportConnector name="auto" uri="auto://localhost:5671?protocolDetectionTimeOut=5000"/>

Configuring Wire Formats

OpenWire is the default Wire Format that ActiveMQ uses.  It provides a highly efficent binary format for high speed messaging.  OpenWire options can be configured on a JMS client's connection URI string or on a Brokers transport bind URI.

Parameter PrefixDescription
wireFormat.Applies the option to all wire formats.
wireFormat.default.Applies the option to the default format which is OpenWire
wireFormat.stomp.Applies the option to the STOMP wire format
wireFormat.amqp.Applies the option to the AMQP wire format
wireFormat.mqtt.Applies the option to the MQTT wire format

An example of a property that applies to all formats:

<transportConnector name="auto" uri="auto://localhost:5671?wireFormat.maxFrameSize=1000"/>

An example of a property only applied to OpenWire would be:

<transportConnector name="auto" uri="auto://localhost:5671?wireFormat.default.maxFrameSize=1000"/>

Configuring Enabled Wire Protocols

By default all wire protocols are available.  This can be configured to only enable certain formats by setting the property  auto.protocols. 

ValueDescription
defaultEnables OpenWire
amqpEnables AMQP format
stompEnables STOMP format
mqttEnables MQTT format

An example showing only OpenWire and STOMP enabled:

<transportConnector name="auto" uri="auto://localhost:5671?auto.protocols=default,stomp"/>