Python 调用 MQ 中间件和 DBus

4 投票
4 回答
936 浏览
提问于 2025-04-16 10:41

我的Python水平比我的中文还差(我说普通话时看到的笑脸比我见过的还多),所以我需要一点帮助:

我想要一个程序,它可以监听MQ(根据配置文件中指定的主题),然后把消息转发到dBus,再从dBus监听(同样是根据配置文件中指定的主题),把消息再转回MQ。经过一番探索,我觉得Python可能比较合适。我找到了:MQTT.orgPYMQiMosquitto

所以这个思路看起来是可行的。现在我在寻找代码示例。我最关心的是如何让代码高效运行。因为这个程序似乎需要在一个轮询循环中运行,我该如何在Python中做到这一点,而不让我的系统变得很慢呢?

4 个回答

1

你需要搞清楚你是在使用MQ(也叫WebSphere MQ或者MQSeries),还是在用MQTT,也就是WebSphere MQ Telemetry。

如果你在用MQ,那你一定要看看PyMQI,这个库现在看起来挺不错的——这里有一个最近的例子,教你怎么使用它。

如果你在用MQTT,这是一种轻量级的消息协议,可以和WebSphere MQ一起使用,只要你有合适的组件,那么mosquitto项目提供了一个Python的接口,还有一些例子可以参考。

我不是Python方面的专家,所以不太确定你该怎么优化循环的部分。

2

我想要一个东西来监听消息队列(MQ),这个监听的主题是根据配置文件来指定的,然后把消息转发到dBus等等。

嗨,stwissel,

我还想提一下,PyMQI即将发布的1.2版本将支持主题和订阅功能。这个版本应该很快就会出来,我现在正在修复一些测试案例。只是想提一下,以防你在想是否可以用PyMQI来使用这些MQ功能;在1.1版本中是不能的,但1.2版本马上就来了。

祝好!

2

PYMQi在这里有一些示例代码:http://packages.python.org/pymqi/examples.html。为了避免频繁检查消息,你可能想了解一下MQ触发器。MQ触发器可以让一个应用程序在队列中有新消息时自动启动。

撰写回答