2011-07-17 16 views
0

RabbitMQキューを聞いてXMPPチャンネルにメッセージを送信して、ユーザーに新しい問題を通知するXMPPボットを書き込む方法を探しています(すでにNagiosがRabbitMQに通知を送信しています)。AMQPとXMPPの接続

私はxmppyを使ってみましたが、動作しなくなり、かなり良く見えるSleekXMPPを見つけました。

AMQPリスナーを定義して、ボットのXMPP "send"メソッドを自動的に呼び出すかどうかは不思議です。 AMQPとXMPPの両方で同時に聞いています。

ありがとうございました!

編集:BOSHははるかに優れた解決策でしょうか?

+0

ようejabberdとXMPPプラグインを使用することができます。これまでのコードを投稿することはできますか? – SingleNegationElimination

答えて

1

あなたのソリューションの最も興味深い部分は、このスペースの多くのライブラリが、それらが唯一のイベントループであると仮定していることです。 (一見簡単ですが、ロックの問題が抱えている)、それぞれTwistedのような非ブロックI/Oアプローチを使用します(ただし、AMQP libraryが必要です)。または、ソケットを抽出します使用しているライブラリのそれぞれからファイル記述子を取り出し、select()またはpoll()を実行して読み込むデータがあることを知らせます。これら3つのうち、ツイストのアプローチは私にとって最も簡単なものです。

BOSHは問題をもっと難しくします。そんなに行かないでください。

+0

私はこれで今日遊んだことがあり、2時間後に私はここで見てみようと思いました。もし誰かがこれを読んでいるのであれば、同じ問題です。 AMQP(Pikaを使用しています)リスナーを実行し、SleekXMPPをスレッド(xmpp.process(threaded = True))プロセスとして実行するように設定します。それは今まで働いています。両方のリスナーが同じ "ファイル"にあります。 – Tabiko

1

これは本当に簡単です。受信したメッセージを単純に出力するAMQPリスナーを作成することから始めてください。その作業をしたら、それをXMPPボットにどのように統合するのかが明らかになります。

関連する問題