Я успешно реализовал HiveMQ в фоновом потоке, но есть небольшая проблема после включения режима полета.Журнал показывает причину, но я думаю, что чего-то не хватает, и я не вижу, где находится отсутствующий обработчик ошибок.
Журнал:
com.hivemq.client.mqtt.exceptions.MqttSessionExpiredException: Session expired as connection was closed.
System.err W io.reactivex.exceptions.OnErrorNotImplementedException: The exception was not handled due to missing onError handler in the subscribe() method call
Код реализации:
client = Mqtt5Client.builder()
.serverHost(host)
.serverPort(port)
.identifier(clientId)
.addDisconnectedListener(new MqttClientDisconnectedListener() {
@Override
public void onDisconnected(MqttClientDisconnectedContext context) {
Log.d(TAG, "On disconnected... " + context.getCause());
}
})
.automaticReconnectWithDefaultConfig()
.buildRx();
Mqtt5Connect connect = Mqtt5Connect.builder()
.willPublish()
.topic(willTopic)
.applyWillPublish()
.build();
Completable connectScenario = client.connect(connect)
.doOnSuccess(this::connectSuccess)
.doOnError(this::connectFailed)
.ignoreElement();
Single<Mqtt5PublishResult> publishConnect
= client.publish(Flowable.just(
Mqtt5Publish.builder()
.topic("d/" + this.clientId + START)
.payload(startData.toByteArray())
.build())).singleOrError();
connectScenario
.andThen(publishConnect)
.doOnSuccess(this::onConnectSuccess)
.doOnError(this::disconnectError)
.subscribe();
Конечно, чего-то не хватает, но вопрос в том, где мне обрабатывать события отключения.