2013-09-22 63 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進行了測試,它似乎在那裏工作。即時通訊猜測它在發送給該主題的消息上有些事要做,或者說它是對阿波羅的一個錯誤 –