Статьи

Великолепное состояние программирования на Python и WebSphere MQ

вступление

В этой статье кратко изложены возможности, которые есть у программистов, когда дело доходит до программирования WebSphere MQ на Python.

WebSphere MQ — это инструмент для всех, и независимо от того, какой у вас опыт, C, C ++, Java, COBOL, Visual Basic или что-то еще, вы также найдете что-то интересное в Python.

Если вы никогда не слышали о WebSphere MQ раньше, я объясню это, рискуя немного упростить. В очереди WebSphere AMQP для AMQP — это то же самое, что Oracle DB для PostgreSQL в земле СУБД.

Актеры

Есть три библиотеки и проекты, из которых Python-программисты могут выбирать, и все они с открытым исходным кодом. Все они позволяют вам подключаться и обмениваться сообщениями с любым приложением MQ, независимо от того, на каком языке или языках оно написано.

Каждый из них основан на предыдущем, чтобы обеспечить более полезные функции с меньшим количеством ручного кодирования.

PyMQI

PyMQI — это библиотека самого низкого уровня, которая обеспечивает прямой доступ ко всем примитивам, которые обычно связаны с программированием MQ на других языках: очереди, темы, администраторы очередей, подписки, команды PCF и все остальное, что необходимо для непосредственного управления объектами MQ.

PyMQI — это инструмент, используемый для быстрых одноразовых заданий, особенно если вы уже знакомы с MQI, который представляет собой C API, предоставляемый WebSphere MQ. PyMQI в основном предоставляет объектно-ориентированный слой Python поверх MQI.

Если вы администратор, и вам нужно что-то удобное для быстрого создания полезного инструмента, Python и PyMQI — инструменты для использования.

Вот пример кода для помещения сообщения в очередь:

import pymqi
 
queue_manager = 'QM01'
channel = 'SVRCONN.1'
host = '192.168.1.135'
port = '1434'
queue_name = 'TEST.1'
message = 'Hello from Python!'
conn_info = '{}({})'.format(host, port)
 
qmgr = pymqi.connect(queue_manager, channel, conn_info)
 
queue = pymqi.Queue(qmgr, queue_name)
queue.put(message)
queue.close()
 
qmgr.disconnect()

Примеры использования PyMQI .

Весенний Питон

Spring Python берет хорошие части Spring для Java и реализует их на Pythonic. Среди прочего, можно найти поддержку программирования JMS WebSphere MQ на Python . Другими словами, полностью беспрепятственный способ обмена сообщениями с приложениями Java от Python.

Для тех, кому интересно, это достигается путем ручного создания и анализа всех заголовков MQRFH2, необходимых за кулисами.

Кроме того, у него есть фабрики соединений, фоновые прослушиватели и шаблон JMS, который является объектом более высокого уровня, с помощью которого можно манипулировать сообщениями MQ.

Используйте Spring Python, если:

  • Вам нужен API более высокого уровня.
  • Вы в порядке с ручным кодированием.
  • Вы уже использовали Spring для Java в другом месте.

Обратите внимание, что Spring Python теперь требует использования JMS, но это то, что скоро изменится, и этот пост будет обновлен, чтобы отразить это.

Вот пример кода для помещения сообщения в очередь:

from springpython.jms.core import JmsTemplate
from springpython.jms.factory import WebSphereMQConnectionFactory
 
qm = 'QM.1'
channel = 'SVRCONN1.1'
host = '192.168.1.121'
port = '1434'
queue1 = 'TEST.1'
 
factory = WebSphereMQConnectionFactory(qm, channel, host, port)
 
jms_template = JmsTemplate(factory)
jms_template.send('Hello world', queue1)
 
factory.destroy()

Примеры использования Spring Python

Zato

[Полное раскрытие: Я являюсь создателем Zato]

Zato является полноценной ESB и Бэкенда сервера , написанным на Python , который поддерживает MQ и на много из других технологий и протоколов и данных форматов .

Его абстракции находятся на высшем уровне, и это требует очень мало кодирования. На самом деле, никакого MQ-специфического программирования не требуется вообще. Можно просто сосредоточиться на получении запросов (что требует нулевого кодирования) и создании сообщений для отправки, в то время как Zato устанавливает соединения, восстанавливает соединение при необходимости, добавляет заголовки и все остальное, что должно быть сделано. Вы просто создаете сообщение, а остальное обрабатывается автоматически.

Вот пример кода для помещения сообщения в очередь:

from zato.server.service import Service
 
class MyService(Service):
  def handle(self):
    self.outgoing.jms_wmq.send('msg', 'connection-name', 'Q.1')

Больше примеров использования Zato MQ .

Можно забыть об особенностях WebSphere MQ, потому что такие детали настраиваются с помощью графического интерфейса (как показано ниже), API , CLI или массово в JSON.


Резюме