2013-09-22 61 views
1

https://github.com/fusesource/mqtt-clientAndroid的MQTT客户端 - 1.5监听与阿波罗

我有一个Android应用程序开始在那里我已经开始朝着阿波罗经纪人的MQTT连接的后台服务。当startService被称为IM开始从onStartCommand的MQTT设置主机名,端口的用户名,密码等。其次是

connection = mqtt.callbackConnection(); 

的连接是全成,我可以清楚地看到,我有一个消费者对我的题目是“UNIQUEID” 。

但是,当我发送邮件到我的话题,听众永远卡列斯的onPublish。另一个奇怪的发生难度,如果我失去我对经纪人连接,例如我关闭代理,使得有源连接断开,当mqtt客户端重新连接时,似乎它调用了监听器,并且还调用了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(); 
    } 
}); 
+0

似乎在activemq和mosquitto上都有效。 –

回答

1

我对阿波罗不熟悉,但我同意这种行为听起来不正确。您可以尝试针对其他经纪商进行测试,以查看其是否按预期工作,然后在必要时提交针对Apollo的错误。

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

+0

实际上我刚刚对activemq 5.8.0进行了测试,它似乎在那里工作。即时通讯猜测它在发送给该主题的消息上有些事要做,或者说它是对阿波罗的一个错误 –