Python 调用 MQ 代理和 DBus

Posted

技术标签:

【中文标题】Python 调用 MQ 代理和 DBus【英文标题】:Python calling a MQ broker and DBus 【发布时间】:2011-06-16 06:41:20 【问题描述】:

我的 Python 比我的中文还差(我从来没有见过这么多笑脸比我试着说普通话时),所以我需要一点帮助:

我想要一些东西来监听 MQ(对于配置中指定的主题)并将消息中继到 dBus,然后监听 dBus(对于配置中指定的主题)并将它们中继回 MQ。从我的结论来看,Python 是合适的。我发现: MQTT.orgPYMQi和Mosquitto。

所以这种方法似乎是有效的。现在我正在寻找代码示例。我主要关心的是使代码高效。由于该例程似乎需要在轮询循环中运行,我该如何在 Python 中执行此操作而不会让我的系统陷入困境。

【问题讨论】:

LOL,中文比Python难多了。彼得来自中国。 【参考方案1】:

PYMQi 在这里有示例代码:http://packages.python.org/pymqi/examples.html 为了不进行轮询,您可能需要查看 MQ 触发器。它们使应用程序能够在消息放入队列时启动。

【讨论】:

【参考方案2】:

我想要听 MQ 的东西(对于配置中指定的主题) 并将消息转发给 dBus 和 [...]

你好,斯威塞尔,

我还想提一下,即将发布的 PyMQI 1.2 版本将提供对主题和订阅的支持。现在应该很快了,我正在修复一些测试用例,正如我们所说的那样。只是想我会提到它,以防您想知道是否可以将这些 MQ 功能与 PyMQI 一起使用;好吧,不是 1.1,而是 1.2 指日可待。

干杯!

【讨论】:

【参考方案3】:

您需要清楚自己使用的是 MQ(WebSphere MQ 又名 MQSeries),还是 MQTT 又名 WebSphere MQ Telemetry。

如果您正在使用 MQ,那么请务必查看 PyMQI,它目前看起来非常不错 - here is a recent example 了解如何使用它。

对于 MQTT,它是一个轻量级的消息协议,可以在给定正确组件的情况下与 WebSphere MQ 互操作,那么 mosquitto 项目提供了一个 Python API,并且有一个 few examples 使用它。

恐怕我不是 Python 专家,所以我不完全确定您将如何围绕循环方面进行优化。

【讨论】:

【参考方案4】:

我相信你不需要投票。 PyMQI 提供阻塞读取(我认为 dBus 也这样做)。

如果您需要同时监听多个连接(例如,dBus 和 MQ),您仍然应该使用阻塞读取,只需在单独的线程中执行每个连接,并可能使用 Python 的 Queue.Queue() 之类的东西来传达结果。这样一来,您就可以在消息到达后立即收到消息,而不会因轮询而造成延迟。

【讨论】:

以上是关于Python 调用 MQ 代理和 DBus的主要内容,如果未能解决你的问题,请参考以下文章

消息队列MQ对比

消息队列MQ对比

python与RabbitMQ

活动 MQ 嵌入式代理;在生产中实用且可靠?

Rabbit MQ

如何识别没有订阅者的节点? (零MQ)