apollo的android mqtt-client-1.5监听器

时间:2013-09-22 16:58:03

标签: android mqtt apollo

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();
    }
});

1 个答案:

答案 0 :(得分:1)

我不熟悉阿波罗,但我同意这种行为听起来不正确。您可以尝试对另一个代理进行测试以查看它是否按预期工作,然后在必要时向Apollo提交错误。

您可以使用例如test.mosquitto.org:1883测试,或使用mqtt.org/software上列出的其他公开的