带有 apollo 的 android mqtt-client-1.5 监听器
Posted
技术标签:
【中文标题】带有 apollo 的 android mqtt-client-1.5 监听器【英文标题】:android mqtt-client-1.5 listener with apollo 【发布时间】:2013-09-27 14:07:03 【问题描述】: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();
);
【问题讨论】:
似乎同时在 activemq 和 mosquitto 上工作.. 有人特别遇到过 apollo 的这个问题吗? 【参考方案1】:我不熟悉 Apollo,但我同意这种行为听起来不正确。您可以尝试对另一个代理进行测试,看看它是否按预期工作,然后在必要时针对 Apollo 提交错误。
你可以使用例如test.mosquitto.org:1883 进行测试,或使用 mqtt.org/software 上列出的其他公共项目之一
【讨论】:
其实我刚才确实针对 activemq 5.8.0 进行了测试,它似乎在那里工作。我猜它与发送到主题的消息有关,或者它是阿波罗上的一个错误以上是关于带有 apollo 的 android mqtt-client-1.5 监听器的主要内容,如果未能解决你的问题,请参考以下文章