0

I'm working on Mosquitto MQTT Broker and I need to reach it by a Spring Boot Application.

The Mosquitto Broker is on a docker container and from an Arduino client and MQTTX client it is successfully reached.

The problem is the Spring Boot application: every time the application try to connect to Broker the following error is raised:

2023-04-18T00:04:54.878+02:00 DEBUG 32920 --- [  restartedMain] com.abubusoft.iot.service.MQTTService    : MQTTService tcp://192.168.1.100:1833 
2023-04-18T00:04:54.891+02:00 DEBUG 32920 --- [  restartedMain] o.e.paho.client.mqttv3.MqttAsyncClient   : paho7659740194162: <init> ClientID=paho7659740194162 ServerURI=tcp://192.168.1.100:1833 PersistenceType=org.eclipse.paho.client.mqttv3.persist.MemoryPersistence@6a3aae31 
2023-04-18T00:04:54.893+02:00 DEBUG 32920 --- [  restartedMain] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: <> 
2023-04-18T00:04:54.897+02:00 DEBUG 32920 --- [  restartedMain] o.e.p.c.mqttv3.internal.ClientState      : paho7659740194162: > 
2023-04-18T00:04:54.899+02:00 DEBUG 32920 --- [  restartedMain] o.e.paho.client.mqttv3.MqttAsyncClient   : paho7659740194162: cleanSession=true connectionTimeout=30 TimekeepAlive=60 userName=null password=[null] will=[null] userContext=null callback=null 
2023-04-18T00:04:54.899+02:00 DEBUG 32920 --- [  restartedMain] o.e.paho.client.mqttv3.MqttAsyncClient   : paho7659740194162: URI=tcp://192.168.1.100:1833 
2023-04-18T00:04:54.900+02:00 DEBUG 32920 --- [  restartedMain] o.e.paho.client.mqttv3.MqttAsyncClient   : paho7659740194162: URI=tcp://192.168.1.100:1833 
2023-04-18T00:04:54.901+02:00 DEBUG 32920 --- [  restartedMain] o.e.paho.client.mqttv3.MqttAsyncClient   : paho7659740194162: < 
2023-04-18T00:04:54.903+02:00 DEBUG 32920 --- [  restartedMain] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: state=CONNECTING 
2023-04-18T00:04:54.904+02:00 DEBUG 32920 --- [  restartedMain] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: > 
2023-04-18T00:04:54.905+02:00 DEBUG 32920 --- [  restartedMain] o.e.paho.client.mqttv3.internal.Token    : paho7659740194162: key=null wait max=-1 token=key=null ,topics= ,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@196d55bd ,isComplete=false ,isNotified=false ,exception=null ,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@62f51a05 
2023-04-18T00:04:54.905+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: > 
2023-04-18T00:04:54.905+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: > 
2023-04-18T00:04:54.905+02:00 DEBUG 32920 --- [  restartedMain] o.e.paho.client.mqttv3.internal.Token    : paho7659740194162: >key=null timeout=-1 sent=false completed=false hasException=false response=null token=key=null ,topics= ,usercontext=org.eclipse.paho.client.mqttv3.MqttAsyncClient@196d55bd ,isComplete=false ,isNotified=false ,exception=null ,actioncallback=org.eclipse.paho.client.mqttv3.internal.ConnectActionListener@62f51a05 
2023-04-18T00:04:54.906+02:00 DEBUG 32920 --- [  restartedMain] o.e.paho.client.mqttv3.internal.Token    : paho7659740194162: key=null wait max=-1 
2023-04-18T00:04:54.906+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: key=Con message=CONNECT clientId paho7659740194162 keepAliveInterval 60 
2023-04-18T00:04:54.907+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: key=Con token=org.eclipse.paho.client.mqttv3.MqttToken@60494888 
2023-04-18T00:04:54.908+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.m.internal.TCPNetworkModule      : paho7659740194162: connect to host 192.168.1.100 port 1,833 timeout 30,000 
2023-04-18T00:04:54.932+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.m.internal.TCPNetworkModule      : paho7659740194162: Failed to create TCP socket 

java.net.ConnectException: Connection refused (Connection refused)
        at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
        at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
        at java.base/java.net.Socket.connect(Socket.java:591)
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:74)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:724)
        at java.base/java.lang.Thread.run(Thread.java:834)

2023-04-18T00:04:54.937+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: connect failed: unexpected exception 

org.eclipse.paho.client.mqttv3.MqttException: Unable to connect to server
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:80)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:724)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
        at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
        at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
        at java.base/java.net.Socket.connect(Socket.java:591)
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:74)
        ... 2 common frames omitted

2023-04-18T00:04:54.976+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: state=DISCONNECTING 
2023-04-18T00:04:54.976+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: resp=Client is currently disconnecting (32102) 
2023-04-18T00:04:54.976+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: > 
2023-04-18T00:04:54.976+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientState      : paho7659740194162: reason Unable to connect to server (32103) - java.net.ConnectException: Connection refused (Connection refused) 
2023-04-18T00:04:54.983+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: > 
2023-04-18T00:04:54.983+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: key=Con 
2023-04-18T00:04:54.984+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientState      : paho7659740194162: disconnected 
2023-04-18T00:04:54.984+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientState      : paho7659740194162: > 
2023-04-18T00:04:54.991+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: > 0 tokens 
2023-04-18T00:04:54.991+02:00 DEBUG 32920 --- [ho7659740194162] o.e.paho.client.mqttv3.TimerPingSender   : paho7659740194162: stop 
2023-04-18T00:04:54.991+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: state=DISCONNECTED 
2023-04-18T00:04:54.991+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsCallback    : paho7659740194162: callback and notify for key=Con 
2023-04-18T00:04:54.991+02:00 DEBUG 32920 --- [ho7659740194162] o.e.paho.client.mqttv3.internal.Token    : paho7659740194162: >key=Con response=null excep=Unable to connect to server (32103) - java.net.ConnectException: Connection refused (Connection refused) 
2023-04-18T00:04:54.995+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsCallback    : paho7659740194162: call onSuccess key=Con 
2023-04-18T00:04:54.995+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: state=CONNECTING 
2023-04-18T00:04:54.995+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: > 
2023-04-18T00:04:54.996+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: > 
2023-04-18T00:04:54.999+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: > 
2023-04-18T00:04:54.999+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: key=Con message=CONNECT clientId paho7659740194162 keepAliveInterval 60 
2023-04-18T00:04:54.999+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: key=Con token=org.eclipse.paho.client.mqttv3.MqttToken@3b0b92a1 
2023-04-18T00:04:55.000+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.m.internal.TCPNetworkModule      : paho7659740194162: connect to host 192.168.1.100 port 1,833 timeout 30,000 
2023-04-18T00:04:55.016+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.m.internal.TCPNetworkModule      : paho7659740194162: Failed to create TCP socket 

java.net.ConnectException: Connection refused (Connection refused)
        at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
        at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
        at java.base/java.net.Socket.connect(Socket.java:591)
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:74)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:724)
        at java.base/java.lang.Thread.run(Thread.java:834)

2023-04-18T00:04:55.016+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: connect failed: unexpected exception 

org.eclipse.paho.client.mqttv3.MqttException: Unable to connect to server
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:80)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:724)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
        at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
        at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
        at java.base/java.net.Socket.connect(Socket.java:591)
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:74)
        ... 2 common frames omitted

2023-04-18T00:04:55.020+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: state=DISCONNECTING 
2023-04-18T00:04:55.020+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: resp=Client is currently disconnecting (32102) 
2023-04-18T00:04:55.020+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: > 
2023-04-18T00:04:55.021+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientState      : paho7659740194162: reason Unable to connect to server (32103) - java.net.ConnectException: Connection refused (Connection refused) 
2023-04-18T00:04:55.023+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: > 
2023-04-18T00:04:55.023+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: key=Con 
2023-04-18T00:04:55.023+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientState      : paho7659740194162: disconnected 
2023-04-18T00:04:55.023+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientState      : paho7659740194162: > 
2023-04-18T00:04:55.031+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsTokenStore  : paho7659740194162: > 0 tokens 
2023-04-18T00:04:55.031+02:00 DEBUG 32920 --- [ho7659740194162] o.e.paho.client.mqttv3.TimerPingSender   : paho7659740194162: stop 
2023-04-18T00:04:55.031+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.ClientComms      : paho7659740194162: state=DISCONNECTED 
2023-04-18T00:04:55.031+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsCallback    : paho7659740194162: callback and notify for key=Con 
2023-04-18T00:04:55.031+02:00 DEBUG 32920 --- [ho7659740194162] o.e.paho.client.mqttv3.internal.Token    : paho7659740194162: >key=Con response=null excep=Unable to connect to server (32103) - java.net.ConnectException: Connection refused (Connection refused) 
2023-04-18T00:04:55.034+02:00 DEBUG 32920 --- [ho7659740194162] o.e.p.c.mqttv3.internal.CommsCallback    : paho7659740194162: call onSuccess key=Con 
2023-04-18T00:04:55.034+02:00 DEBUG 32920 --- [ho7659740194162] o.e.paho.client.mqttv3.internal.Token    : paho7659740194162: >key=null response=null excep=Unable to connect to server (32103) - java.net.ConnectException: Connection refused (Connection refused) 
2023-04-18T00:04:55.034+02:00 DEBUG 32920 --- [ho7659740194162] o.e.paho.client.mqttv3.internal.Token    : paho7659740194162: >key=null response=null excep=Unable to connect to server (32103) - java.net.ConnectException: Connection refused (Connection refused) 
2023-04-18T00:04:55.038+02:00 DEBUG 32920 --- [  restartedMain] o.e.paho.client.mqttv3.internal.Token    : paho7659740194162: failed with exception 

org.eclipse.paho.client.mqttv3.MqttException: Unable to connect to server
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:80)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:724)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
        at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
        at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
        at java.base/java.net.Socket.connect(Socket.java:591)
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:74)
        ... 2 common frames omitted

Unable to connect to server (32103) - java.net.ConnectException: Connection refused (Connection refused)
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:80)
        at org.eclipse.paho.client.mqttv3.internal.ClientComms$ConnectBG.run(ClientComms.java:724)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
        at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
        at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
        at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
        at java.base/java.net.Socket.connect(Socket.java:591)
        at org.eclipse.paho.client.mqttv3.internal.TCPNetworkModule.start(TCPNetworkModule.java:74)
        ... 2 more

The Mosquitto MQTT Broker does not require credentials (it's a server for developer purpose). Its configuration:

allow_anonymous true
persistence false

listener 1883 0.0.0.0

The snippet code in the Spring Boot application does not work:

package com.abubusoft.iot.service;

import java.util.Arrays;
import javax.net.ssl.SSLSocketFactory;
import org.eclipse.paho.client.mqttv3.*;
import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

@Service
public class MQTTService {

    private MqttClient client;

    private String brokerServer;

    public MQTTService(@Value("${spring.mqtt.broker.server}") String brokerServer) {
        log.debug("MQTTService {}", brokerServer);
        this.brokerServer = brokerServer;

        try {
            client =
                new MqttClient(
                    brokerServer, // serverURI in format:
                    MqttClient.generateClientId(), // ClientId
                    new MemoryPersistence()
                ); // Persistence

            MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
            //mqttConnectOptions.setUserName("<your_username>");
            //mqttConnectOptions.setPassword("<your_password>".toCharArray());
            // using the default socket factory
            //mqttConnectOptions.setSocketFactory(SSLSocketFactory.getDefault());

            client.setCallback(callback);
            client.connect(mqttConnectOptions);

            client.subscribe("/device/status", 0);
            // client.setTimeToWait();
            //            client.publish(
            //                "topic",
            //                "payload".getBytes(UTF_8),
            //                2, // QoS = 2
            //                false);
        } catch (MqttException e) {
            e.printStackTrace();
        }
    }

    private final Logger log = LoggerFactory.getLogger(MQTTService.class);

    private MqttCallback callback = new MqttCallback() {
        @Override
        // Called when the client lost the connection to the broker
        public void connectionLost(Throwable cause) {
            System.out.println("client lost connection " + cause);
        }

        @Override
        public void messageArrived(String topic, MqttMessage message) {
            System.out.println(topic + ": " + Arrays.toString(message.getPayload()));
        }

        @Override
        // Called when an outgoing publish is complete
        public void deliveryComplete(IMqttDeliveryToken token) {
            System.out.println("delivery complete " + token);
        }
    };
}

The Spring boot application use the following library

<groupId>org.eclipse.paho</groupId>
   <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
   <version>1.2.5</version>
</dependency>

The Mosquitto Broker is eclipse-mosquitto:2.0.15.

Any suggestion to resolve this problem? Thanks in advance.

xcesco
  • 4,690
  • 4
  • 34
  • 65
  • 1
    `MQTTService tcp://192.168.1.100:1833` you have a typo in the port (`1833` vs `1883`) – Brits Apr 18 '23 at 02:01

0 Answers0