【发布时间】:2019-12-15 00:37:08
【问题描述】:
我在 Spring 中使用 HiveMQ MQTT 客户端来接收 MQTT 消息。
我的客户端配置如下所示
public Mqtt3AsyncClient mqtt3Client() {
var mqtt3Client = Mqtt3Client.builder()
.serverHost("my.host")
.sslWithDefaultConfig()
.serverPort(0000)
.automaticReconnectWithDefaultConfig()
.buildBlocking();
mqtt3Client.connect();
return mqtt3Client.toAsync();
}
客户端可用后,使用客户端初始化另一个Spring Bean。它订阅了一个主题:
@PostConstruct
public void subscribeTopic() {
mqtt3AsyncClient.subscribeWith()
.topicFilter("topicfilter")
.qos(MqttQos.AT_LEAST_ONCE)
.callback(message -> {
/*Handle message*/
})
.send()
.whenComplete((mqtt3SubAck, throwable) -> {
if (throwable != null) {
/*Logging*/
} else {
/*Logging*/
}
});
}
我多次看到没有更多消息传递到我的应用程序,而我仍然能够使用客户端连接发送消息(因此它当时已连接)。
我找不到任何关于 HiveMQ MQTT 客户端如何处理配置的automaticReconnectWithDefaultConfig() 的文档。谁能指出,我在subscribeTopic() 中创建的订阅是否被重新订阅?
我还找到了可以替换.topicFilter(..).qos(...) 部分的方法addSubscription()。我也找不到任何信息,这是否会使订阅对连接丢失更具弹性。
如果您能提供有关该主题的任何信息,我将不胜感激。
谢谢。
【问题讨论】: