tocrhz / mqtt-spring-boot-starter

MQTT starter for Spring Boot, easier to use.
Apache License 2.0
93 stars 47 forks source link

Too many publishes in progress #3

Closed felixalguzman closed 3 years ago

felixalguzman commented 3 years ago

Hi sometimes when sending multiple messages I get this error:

2021-02-08 13:21:14.440 ERROR 18040 --- [lt_client_fraga] c.g.tocrhz.mqtt.publisher.MqttPublisher  : message publish error: Too many publishes in progress

org.eclipse.paho.client.mqttv3.MqttException: Too many publishes in progress
    at org.eclipse.paho.client.mqttv3.internal.ClientState.send(ClientState.java:527) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
    at org.eclipse.paho.client.mqttv3.internal.ClientComms.internalSend(ClientComms.java:163) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
    at org.eclipse.paho.client.mqttv3.internal.ClientComms.sendNoWait(ClientComms.java:193) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
    at org.eclipse.paho.client.mqttv3.MqttAsyncClient.publish(MqttAsyncClient.java:1375) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
    at com.github.tocrhz.mqtt.publisher.MqttPublisher.send(MqttPublisher.java:141) ~[mqtt-spring-boot-starter-1.1.2.jar:na]
    at com.github.tocrhz.mqtt.publisher.MqttPublisher.send(MqttPublisher.java:31) ~[mqtt-spring-boot-starter-1.1.2.jar:na]
    at com.alterna.backendhmi.mqtt.accounts.MqttLogin.loginOperador(MqttLogin.java:69) ~[main/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:564) ~[na:na]
    at com.github.tocrhz.mqtt.subscriber.MqttSubscriber.accept(MqttSubscriber.java:26) ~[mqtt-spring-boot-starter-1.1.2.jar:na]
    at com.github.tocrhz.mqtt.autoconfigure.MqttConnector$2.messageArrived(MqttConnector.java:134) ~[mqtt-spring-boot-starter-1.1.2.jar:na]
    at org.eclipse.paho.client.mqttv3.internal.CommsCallback.deliverMessage(CommsCallback.java:519) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
    at org.eclipse.paho.client.mqttv3.internal.CommsCallback.handleMessage(CommsCallback.java:417) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
    at org.eclipse.paho.client.mqttv3.internal.CommsCallback.run(CommsCallback.java:214) ~[org.eclipse.paho.client.mqttv3-1.2.5.jar:na]
    at java.base/java.lang.Thread.run(Thread.java:832) ~[na:na]

Am I missing some configuration?

tocrhz commented 3 years ago

It looks like paho's bug. see this github.com/eclipse/paho.mqtt.java/issues/551 if you don't want to change the code, you can try to update to 1.2.0, I changed the default QoS to 0. if must use QoS 1, try this github.com/eclipse/paho.mqtt.java/pull/690

felixalguzman commented 3 years ago

Great, thanks a lot!!, I will use the 1.2.0 version