【问题标题】:Interconnecting AMQP and XMPP互连 AMQP 和 XMPP
【发布时间】:2011-07-17 11:40:55
【问题描述】:

我正在寻找一种编写 XMPP 机器人的方法,该机器人将侦听 RabbitMQ 队列并向 XMPP 通道发送消息,通知用户任何新问题(已经让 Nagios 向 RabbitMQ 发送通知)。

我尝试过使用 xmppy,但它停止了工作,我偶然发现了 SleekXMPP,它看起来相当好。

我只是想知道我是否定义了一个 AMQP 侦听器来自动调用机器人中的 XMPP“发送”方法。所以它会同时监听 AMQP 和 XMPP。

感谢您的帮助!

编辑:BOSH 在这里会是更好的解决方案吗?

【问题讨论】:

  • 很难说你的问题是什么。您可以发布到目前为止的代码吗?

标签: python xmpp amqp


【解决方案1】:

您的解决方案中最有趣的部分是该领域的许多库都假定它们是唯一的事件循环。您要么需要将每个线程放在自己的线程中(看似更容易,但充满潜在的锁定问题),使用非阻塞 I/O 方法,如 Twisted(但您需要 AMQP library),或者从您正在使用的每个库中提取套接字文件描述符并在它们上运行 select() 或 poll() 以判断何时有数据要读取。在这三个中,Twisted 方法对我来说似乎是最简单的。

BOSH 只会让问题变得更加困难。不要那样做。

【讨论】:

  • 我今天玩过这个,2小时后我会在这里看看。如果有人正在阅读这篇文章并且遇到同样的问题。运行 AMQP(我正在使用 Pika)侦听器,并将 SleekXMPP 设置为线程( xmpp.process(threaded=True) )进程。到目前为止它正在工作。两个监听器都在同一个“文件”中。
【解决方案2】:

这真的很简单。我建议您首先编写一个简单地打印接收到的消息的 AMQP 侦听器。一旦你开始工作,如何将它集成到 XMPP 机器人中应该是显而易见的。

【讨论】:

    【解决方案3】:

    你可以像https://github.com/rabbitmq/rabbitmq-xmpp这样使用ejabberd和xmpp插件

    【讨论】:

      猜你喜欢
      • 2015-08-20
      • 2011-06-24
      • 2011-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 2011-03-11
      • 2023-04-10
      相关资源
      最近更新 更多