2011-01-27 5 views
4

Мой Python хуже, чем мой китайский (я никогда не видел так много улыбающихся лиц, чем когда я пытаюсь говорить мандарин), так что мне нужно немного помочь:Python вызова MQ брокеру и DBus

Я хочу что-то слушайте MQ (для тем, заданных в конфигурации) и передайте сообщение на dBus, и в ответ прослушайте dBus (по темам, указанным в конфигурации), и передайте их обратно в MQ. Из-за того, что мой вывод - это Python. Я нашел: MQTT.orgPYMQi и Mosquitto.

Таким образом, подход кажется действительным. Теперь я ищу образцы кода. Моя главная задача - сделать код эффективным. Поскольку кажется, что подпрограмма должна запускаться в цикле опроса, как мне это сделать в Python, не увязывая мою систему.

+0

LOL, китайский язык намного сложнее, чем Python. Питер из Китая. –

ответ

2

PYMQi имеет образец кода здесь: http://packages.python.org/pymqi/examples.html Для того, чтобы не опросить вас, вы можете посмотреть MQ Triggers. Они позволяют запускать приложение, когда сообщение помещается в очередь.

1

Вам нужно четко указать, используете ли вы MQ (WebSphere MQ aka MQSeries) или MQTT aka WebSphere MQ Telemetry.

Если вы используете MQ, то определенно проверьте PyMQI, который выглядит довольно неплохо на данном этапе - here is a recent example о том, как это использовать.

Для MQTT, который является легким протоколом сообщений, который может взаимодействовать с WebSphere MQ с учетом правильных компонентов, тогда проект mosquitto предоставляет API Python, и есть few examples, которые его используют.

Боюсь, что я не эксперт по Python, поэтому я не совсем уверен, как вы оптимизируете вокруг себя.

0

Я считаю, что вам не нужно опроса. PyMQI обеспечивает блокировку чтения (и я думаю, что dBus тоже делает это).

Если вам необходимо прослушивать несколько подключений одновременно (например, как dBus, так и MQ), вы все равно должны использовать блокирующие чтения, просто исполняя каждый в отдельном потоке и, возможно, передавая результаты, используя что-то вроде Python's Queue.Queue(). Таким образом, вы получаете сообщения, как только они прибудут, без задержки, вызванной опросом.

1

Я хочу что-то, чтобы слушать MQ (по темам, указанным в конфигурации) и ретранслировать сообщение для Dbus и [...]

Hi stwissel,

Я бы также хотелось бы упомянуть, что предстоящий выпуск версии PyMQI 1.2 обеспечит поддержку тем и подписки. Это должно быть действительно довольно скоро, я фиксирую некоторые тестовые примеры буквально, когда мы говорим. Просто подумал, что я упоминал об этом на случай, если вам интересно, можно ли использовать эти функции MQ с PyMQI; ну, а не с 1.1, но 1.2 не за горами.

Cheers!