# How to verify VerneMQ is start with MQTT version 5.x enable

**URL:** <https://erlangforums.com/t/how-to-verify-vernemq-is-start-with-mqtt-version-5-x-enable/1081>\
**Category:** VerneMQ Questions\
**Tags:** vernemq-questions\
**Created:** [February 16, 2022, 1:26pm UTC](https://erlangforums.com/t/how-to-verify-vernemq-is-start-with-mqtt-version-5-x-enable/1081 "2022-02-16T13:26:29Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![baoquach](https://erlangforums.com/letter_avatar_proxy/v4/letter/b/a6a055/32.png) [@baoquach](https://erlangforums.com/u/baoquach)\
**Post date:** [February 16, 2022, 1:26pm UTC](https://erlangforums.com/t/how-to-verify-vernemq-is-start-with-mqtt-version-5-x-enable/1081/1 "2022-02-16T13:26:29Z")

</div>

Hi All

How to verify VerneMQ is start with MQTT version 5.x enable ?

My command to

```plaintext
 docker run -p 1883:1883 -p 8888:8888 -e LISTENER_TCP_ALLOWED_PROTOCOL_VERSIONS=3,4,5 -e "DOCKER_VERNEMQ_ACCEPT_EULA=yes" -e "DOCKER_VERNEMQ_ALLOW_ANONYMOUS=on" -e "SHARED_SUBSCRIPTION_POLICY=prefer_local" -e LOG_CONSOLE=both -e LOG_CONSOLE_FILE=/opt/scats/log/vernemq.log -e LOG_ERROR_FILE=/opt/scats/log/vernemq_error.log -d vernemq/vernemq &

```

I can connect to my VerneMQ Broker instacne using MQTT Explorer.

However My Java test written to support MQTT 5 get exception of

```plaintext
excep Connection lost (32109) - java.net.SocketException: Connection reset
Connection lost (32109) - java.net.SocketException: Connection reset
	at org.eclipse.paho.mqttv5.client.internal.CommsReceiver.run(CommsReceiver.java:196)
	at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.net.SocketException: Connection reset
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:186)
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
	at java.base/java.io.DataInputStream.read(DataInputStream.java:149)
	at org.eclipse.paho.mqttv5.client.wire.MqttInputStream.readFully(MqttInputStream.java:151)
	at org.eclipse.paho.mqttv5.client.wire.MqttInputStream.readMqttWireMessage(MqttInputStream.java:124)
	at org.eclipse.paho.mqttv5.client.internal.CommsReceiver.run(CommsReceiver.java:139)

```

The source is download below

Can you please let me know what I am doing wrong?

Thank you for your help and support.

```erlang

import org.eclipse.paho.mqttv5.client.MqttAsyncClient;
import org.eclipse.paho.mqttv5.client.MqttConnectionOptions;
import org.eclipse.paho.mqttv5.client.IMqttToken;
import org.eclipse.paho.mqttv5.client.persist.MemoryPersistence;
import org.eclipse.paho.mqttv5.common.MqttException;
import org.eclipse.paho.mqttv5.common.MqttMessage;

public class MqttPublishSampleV5 {

    public static void main(String[] args) {

        String topic = "sp/moc/bc/sdd/rt-veh/veh/1.0.1";
        String content = "Message from MqttPublishSample";
        int qos = 1;
       // String broker = "tcp://10.151.42.64:1883";
        String broker = "tcp://10.151.42.64:1883";
        String clientId = generateClientId();
        MemoryPersistence persistence = new MemoryPersistence();

        try {
            MqttConnectionOptions connOpts = new MqttConnectionOptions();
            connOpts.setCleanStart(false);
            connOpts.setKeepAliveInterval(15);
            connOpts.setConnectionTimeout(30);

            MqttAsyncClient sampleClient = new MqttAsyncClient(broker, clientId, persistence);
            System.out.println("Connecting to broker: " + broker);
            IMqttToken token = sampleClient.connect(connOpts);
            token.waitForCompletion();
            System.out.println("Connected");
            System.out.println("Publishing message: "+content);

            MqttMessage message = new MqttMessage(content.getBytes());
            message.setQos(qos);
            token = sampleClient.publish(topic, message);
            token.waitForCompletion();
            System.out.println("Disconnected");
            System.out.println("Close client.");
            sampleClient.close();
            System.exit(0);
        } catch(MqttException me) {
            System.out.println("reason "+me.getReasonCode());
            System.out.println("msg "+me.getMessage());
            System.out.println("loc "+me.getLocalizedMessage());
            System.out.println("cause "+me.getCause());
            System.out.println("excep "+me);
            me.printStackTrace();
        }
    }
    public static String generateClientId() {

        return "scatsava" + System.nanoTime();
    }
}

```

---

<div class="post-metadata">

**Author:** ![afa](https://erlangforums.com/user_avatar/erlangforums.com/afa/32/298_2.png) [@afa](https://erlangforums.com/u/afa)\
**Post date:** [February 16, 2022, 2:24pm UTC](https://erlangforums.com/t/how-to-verify-vernemq-is-start-with-mqtt-version-5-x-enable/1081/2 "2022-02-16T14:24:29Z")

</div>

Please ensure that you use the correct env variable format (regarding “.” and “\_”).  
Referring you to the “remark” here: [GitHub - vernemq/docker-vernemq: VerneMQ Docker image - Starts the VerneMQ MQTT broker and listens on 1883 and 8080 (for websockets).](https://github.com/vernemq/docker-vernemq#remarks)

---

<div class="post-metadata">

**Author:** ![baoquach](https://erlangforums.com/letter_avatar_proxy/v4/letter/b/a6a055/32.png) [@baoquach](https://erlangforums.com/u/baoquach)\
**Post date:** [February 17, 2022, 3:21am UTC](https://erlangforums.com/t/how-to-verify-vernemq-is-start-with-mqtt-version-5-x-enable/1081/3 "2022-02-17T03:21:00Z")

</div>

Hi André

Thank you for your reply, I have the correct environment paramter suggested in URL [GitHub - vernemq/docker-vernemq: VerneMQ Docker image - Starts the VerneMQ MQTT broker and listens on 1883 and 8080 (for websockets).](https://github.com/vernemq/docker-vernemq#remarks)

```nohighlight
 docker run -p 1883:1883 -p 8888:8888 -e "LISTENER_TCP_ALLOWED_PROTOCOL_VERSIONS=3,4,5" -e "DOCKER_VERNEMQ_ACCEPT_EULA=yes" -e "DOCKER_VERNEMQ_ALLOW_ANONYMOUS=on" -e "SHARED_SUBSCRIPTION_POLICY=prefer_local" -e "DOCKER_VERNEMQ_VMQ_WEBHOOKS __POOL_timeout=6000" -e "DOCKER_VERNEMQ_VMQ_WEBHOOKS.pool_timeout=60000" -e DOCKER_VERNEMQ_LOG__ CONSOLE=both -e "DOCKER_VERNEMQ_LOG __CONSOLE__ LEVEL=debug" -e LOG_CONSOLE_FILE=/opt/scats/log/vernemq.log -e LOG_ERROR_FILE=/opt/scats/log/vernemq_error.log -d vernemq/vernemq &

```

My VerneMQ docker contains is running.

I set -e “LISTENER\_TCP\_ALLOWED\_PROTOCOL\_VERSIONS=3,4,5” the enable support for MQTT ver 3.x and 5.x

I am able to connect use MQTT Explorer, my Java client MQTT support ver 3.x can publish to subcribe to VerneMQ docker contains is running.

But my Java client MQTT support ver 5.x can NOT publish to subcribe I get an error of

```nohighlight
cause java.net.SocketException: Connection reset
excep Connection lost (32109) - java.net.SocketException: Connection reset
Connection lost (32109) - java.net.SocketException: Connection reset
	at org.eclipse.paho.mqttv5.client.internal.CommsReceiver.run(CommsReceiver.java:196)
	at java.base/java.lang.Thread.run(Thread.java:835)

```

How can check my version VerneMQ docker container is enable to support MQTT ver 5.x  
My main of objectivw to use Request and Repsone message that support in MQTT ver 5.x.

Note: my Java client MQTT support ver 5.x can publish to subcribe fine with Mosquito or HiveMQTT, we want would to use VerneMQ in QA, pre-prod and production environment.

Thank you for your help and support

Regards, Bao

---

<div class="post-metadata">

**Author:** ![afa](https://erlangforums.com/user_avatar/erlangforums.com/afa/32/298_2.png) [@afa](https://erlangforums.com/u/afa)\
**Post date:** [February 17, 2022, 6:57am UTC](https://erlangforums.com/t/how-to-verify-vernemq-is-start-with-mqtt-version-5-x-enable/1081/4 "2022-02-17T06:57:46Z")

</div>

Interesting.  
First, check what the Verne logs say on that connection attempt.  
Second, can you try setting the allowed protocols on a listener level, not on protocol (TCP) level?

That is, you should end up with a line like `listener.tcp.my_listener.allowed_protocol_versions=3,4,5` in the vernemq.conf file, where `my_listener` is the name of your listener. (Use the same name as in the listener endpoint definition. It is named `default` by default.)

---

<div class="post-metadata">

**Author:** ![baoquach](https://erlangforums.com/letter_avatar_proxy/v4/letter/b/a6a055/32.png) [@baoquach](https://erlangforums.com/u/baoquach)\
**Post date:** [February 18, 2022, 11:01am UTC](https://erlangforums.com/t/how-to-verify-vernemq-is-start-with-mqtt-version-5-x-enable/1081/5 "2022-02-18T11:01:40Z")

</div>

Hi Andre

I running VerneMQ docker container with setting

```nohighlight
  docker run -p 1883:1883 -p 8888:8888 -e "LISTENER_TCP_DEFAULT=127.0.0.1:1883" -e "LISTENER_TCP_DEFAULT_ALLOWED_PROTOCOL_VERSIONS=3,4,5" -e "LISTENER_TCP_ALLOWED_PROTOCOL_VERSIONS=3,4,5" -e "DOCKER_VERNEMQ_ACCEPT_EULA=yes" -e "DOCKER_VERNEMQ_ALLOW_ANONYMOUS=on" -e "SHARED_SUBSCRIPTION_POLICY=prefer_local" -e "DOCKER_VERNEMQ_VMQ_WEBHOOKS __POOL_timeout=6000" -e "DOCKER_VERNEMQ_VMQ_WEBHOOKS.pool_timeout=60000" -e DOCKER_VERNEMQ_LOG__ CONSOLE=both -e "DOCKER_VERNEMQ_LOG __CONSOLE__ LEVEL=debug" -e "LOG_CONSOLE_FILE=/opt/scats/log/vernemq.log" -e "LOG_ERROR_FILE=/opt/scats/log/vernemq_error.log" -d vernemq/vernemq &

```

I still get exception of

```nohighlight
Connection lost (32109) - java.net.SocketException: Connection reset
	at org.eclipse.paho.mqttv5.client.internal.CommsReceiver.run(CommsReceiver.java:196)
	at java.base/java.lang.Thread.run(Thread.java:835)
Caused by: java.net.SocketException: Connection reset
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:186)
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
	at java.base/java.io.DataInputStream.read(DataInputStream.java:149)

```

my Java client MQTT support ver 5.x but my Java client MQTT support ver 3.x working fine.

Also I can not see VerneMQ log file from /var/log/vernemq/console.log  
Or in the directories I specific -e “LOG\_CONSOLE\_FILE=/opt/scats/log/vernemq.log” -e “LOG\_ERROR\_FILE=/opt/scats/log/vernemq\_error.log”

I am kind of block  
Can please let me know what I am doing wrong.

Thank you for your help and support

---

<div class="post-metadata">

**Author:** ![afa](https://erlangforums.com/user_avatar/erlangforums.com/afa/32/298_2.png) [@afa](https://erlangforums.com/u/afa)\
**Post date:** [February 18, 2022, 1:06pm UTC](https://erlangforums.com/t/how-to-verify-vernemq-is-start-with-mqtt-version-5-x-enable/1081/6 "2022-02-18T13:06:55Z")

</div>

The format is still wrong in your command. (It’s confusing, not your fault). Here’s a shortened example:

```erlang
docker run -p 1883:1883 -p 8888:8888 -e "DOCKER_VERNEMQ_LISTENER __TCP__ DEFAULT=127.0.0.1:1883" -e "DOCKER_VERNEMQ_LISTENER __TCP__ DEFAULT__ALLOWED_PROTOCOL_VERSIONS=3,4,5" -e "DOCKER_VERNEMQ_ACCEPT_EULA=yes" -e "DOCKER_VERNEMQ_ALLOW_ANONYMOUS=on" -d vernemq/vernemq &

```

Exec into the container, then check with `cat etc/vernemq.conf`. Doing this should show you the last lines of the conf file. All the values between ###START### and ###END### will be the inserted ones. This way you can make sure you got the format right. All the values should have the same format as in a canonical `vernemq.conf` file.

EDIT: (to be explicit)

- prefix any env var with `DOCKER_VERNEMQ_`
- replace any `.` in the canonical format with `__` (2 underscores)
- but don’t substitute any `_` that is part of the variable name, as in `ALLOW_ANONYMOUS`

---

<div class="post-metadata">

**Author:** ![baoquach](https://erlangforums.com/letter_avatar_proxy/v4/letter/b/a6a055/32.png) [@baoquach](https://erlangforums.com/u/baoquach)\
**Post date:** [February 19, 2022, 11:26am UTC](https://erlangforums.com/t/how-to-verify-vernemq-is-start-with-mqtt-version-5-x-enable/1081/7 "2022-02-19T11:26:41Z")

</div>

Hi Andre

Thank you very for your help, I finally got my VerneMQ Docker container accept request from my Java Client MQTT 5.x and 3.x, by putting -e “DOCKER\_VERNEMQ\_LISTENER\_\_TCP\_\_ALLOWED\_PROTOCOL\_VERSIONS=3,4,5”

Below is the complete command

```nohighlight
docker run -p 1883:1883 -p 8888:8888 -e "LISTENER_TCP_DEFAULT=127.0.0.1:1883" -e "DOCKER_VERNEMQ_LISTENER __TCP__ DEFAULT __ALLOWED_PROTOCOL_VERSIONS=3,4,5" -e "DOCKER_VERNEMQ_LISTENER__ TCP __ALLOWED_PROTOCOL_VERSIONS=3,4,5" -e "DOCKER_VERNEMQ_LISTENER__ TCP __DEFAULT__ MAX_CONNECTIONS=200000" -e "DOCKER_VERNEMQ_ACCEPT_EULA=yes" -e "DOCKER_VERNEMQ_ALLOW_ANONYMOUS=on" -e "SHARED_SUBSCRIPTION_POLICY=prefer_local" -e "DOCKER_VERNEMQ_VMQ_WEBHOOKS __POOL_timeout=6000" -e "DOCKER_VERNEMQ_VMQ_WEBHOOKS.pool_timeout=60000" -e DOCKER_VERNEMQ_LOG__ CONSOLE=both -e "DOCKER_VERNEMQ_LOG __CONSOLE__ LEVEL=debug" -e "LOG_CONSOLE_FILE=/opt/scats/log/vernemq.log" -e "LOG_ERROR_FILE=/opt/scats/log/vernemq_error.log" -d vernemq/vernemq &

```
