我正在寻找一种方法来编写一个XMPP机器人,该机器人将侦听RabbitMQ队列并向XMPP通道发送消息,通知用户任何新问题(已经让Nagios向RabbitMQ发送通知)。
我尝试过使用xmppy而且它停止了工作,我偶然发现了看起来相当好的SleekXMPP。
我只是想知道我是否定义了一个AMQP监听器来自动调用机器人中的XMPP“send”方法。因此,它同时会在AMQP和XMPP上进行监听。
感谢您的帮助!
编辑:BOSH会在这里提供更好的解决方案吗?
答案 0 :(得分:1)
这真的很简单。我建议您首先编写一个AMQP监听器,它只是打印出收到的消息。一旦你开始工作,应该很明显如何将它集成到XMPP机器人中。
答案 1 :(得分:1)
您的解决方案中最有趣的部分是该空间中的许多库都假设它们是唯一的事件循环。您需要将每个线程放在自己的线程中(看似更容易,但充满了潜伏的锁定问题),使用非阻塞I / O方法,如Twisted(但您需要一个AMQP {{3从您正在使用的每个库中提取套接字文件描述符,并对它们运行select()或poll()以告知何时有数据要读取。在这三个中,Twisted方法对我来说似乎最容易。
BOSH只会让问题变得更加困难。不要那样走。
答案 2 :(得分:0)
您可以使用ejabberd和xmpp这样的插件https://github.com/rabbitmq/rabbitmq-xmpp