2011-07-17 109 views
0

我正在尋找一種方法來編寫XMPP機器人,它將監聽RabbitMQ隊列並將消息發送到XMPP通道,通知用戶任何新的問題(已經有Nagios發送通知給RabbitMQ)。AMQP和XMPP互聯

我試過使用xmppy,它停止工作,我偶然發現SleekXMPP看起來相當好。

我只是想知道我是否定義了一個AMQP監聽器來自動調用bot中的XMPP「send」方法。所以它會同時在AMQP和XMPP上同時收聽。

謝謝你的幫助!

編輯:BOSH會更好的解決方案嗎?

+0

這很難說,你的問題是什麼。你可以發佈迄今爲止的代碼嗎? – SingleNegationElimination

回答

1

解決方案中最有趣的部分是該空間中的許多庫都假設它們是唯一的事件循環。你可能需要把它們放在它自己的線程中(看起來更容易,但充滿了潛伏的鎖定問題),使用非阻塞I/O方法,如Twisted(但你需要一個AMQP library),或者提取套接字文件描述符從你正在使用的每個庫中取出,並對它們運行select()或poll()以告知何時有數據要讀取。在這三個中,Twisted方法對我來說似乎最簡單。

BOSH只會讓問題變得更加困難。不要這樣。

+0

我今天玩過這個遊戲,經過2個小時後,我會在這裏看看。如果有人正在閱讀本文,並且出現同樣的問題。運行AMQP(我使用Pika)偵聽器,並將SleekXMPP運行設置爲線程化(xmpp.process(threaded = True))進程。它工作到目前爲止。兩個聽衆都在同一個「文件」中。 – Tabiko

1

這真的很簡單。我建議你首先編寫一個AMQP監聽器,它只是打印出收到的消息。一旦你得到這個工作,應該很明顯的如何將它集成到一個XMPP機器人中。