2014-01-23 34 views
0

當代理有一個發佈者和訂閱者(​​通過MQTT)時,不存在持久性消息。我在LevelDB和MySQL中測試過。在LevelDB中只有主題名稱。也許配置是錯誤的,或者我需要另一個持久性?也許MQTT消息不寫入消息存儲?攔截activemq設備ID

我的任務是get publishe/subscriber id's。我怎麼能做到這一點,也許這其中一些:

  • 獲得另一個持久性,如kahaDB與archiveDataLogs = true或高性能雜誌?
  • 配置'正確'持久?
  • 獲取經紀人的一些日誌或日記?
  • 編寫插件並從RAM獲取這些數據?

版本5.9。

性LevelDB configurtion:

<persistenceAdapter> 
    <LevelDB directory="${activemq.data}/leveldb"/> 
</persistenceAdapter> 

現在,我就先在KahaDB日誌歸檔?但沒有結果。存檔文件夾爲空:

<persistenceAdapter> 
    <kahaDB directory="${activemq.data}/kahadb" archiveDataLogs="true" directoryArchive="${activemq.data}/datalog"/> 
</persistenceAdapter> 

謝謝。

+0

請發佈您正在使用的版本,以及一些配置或代碼與您的問題或沒有人會能夠幫助你。 –

回答

0

我不是ActiveMQ的專家,但我認爲這可能很難實現。是否使用ActiveMQ作爲您的一項硬性要求,或者您是否可以更改產品?

如果ActiveMQ不是硬性需求,則可以使用功能齊全的MQTT代理,該代理明確允許執行消息攔截,例如HiveMQ。通過插件系統,截取消息,提取事物並將其保存到選擇的數據庫(無論是SQL還是NoSQL)是完全可能的。你可以找到一個大圖的博客文章,這將如何工作here

插件系統的文檔可以找到here

請注意,因爲我在HiveMQ上工作,所以可能會有偏差。

+0

ActiveMQ很好,因爲它支持乘法[protocols](http://activemq.apache.org/protocols.html)。任務已更改。我只需要發佈/訂閱者ID,而不是消息。 –