https://github.com/fusesource/mqtt-client
我有一个启动后台服务的 android 应用程序,在该服务中我启动了与 apollo 代理的 mqtt 连接。当调用 startService 时,我从 onStartCommand 设置主机名、端口用户名、密码等启动 MQTT。然后
connection = mqtt.callbackConnection();
连接成功,我可以清楚地看到我的主题“uniqueId”有一个消费者。
但是当我向我的主题发送消息时,侦听器从不调用onPublish .. 另一个奇怪的情况是,如果我失去与代理的连接,例如,我关闭代理以便活动连接断开,当 mqtt-client重新连接,它似乎调用了侦听器和 onPublish,因为这样我堆积在我的持久订阅者主题上的所有消息都被传递了..我在这里遗漏了关于侦听器的任何内容吗?
不是因为connection.subscribe而主动消费主题吗?
Topic[] topics = { new Topic("uniqueId", QoS.AT_LEAST_ONCE) };
connection.subscribe(topics, new Callback<byte[]>() {
public void onSuccess(byte[] qoses) {
}
public void onFailure(Throwable value) {
value.printStackTrace();
}
});
connection.listener(new Listener() {
@Override
public void onConnected() {
}
@Override
public void onDisconnected() {
}
@Override
public void onFailure(Throwable value) {
}
@Override
public void onPublish(UTF8Buffer topic, Buffer payload, Runnable ack) {
ack.run();
}
});