將 WebSphere MQ 與 Twisted 一起使用 (Using WebSphere MQ with Twisted)


問題描述

將 WebSphere MQ 與 Twisted 一起使用 (Using WebSphere MQ with Twisted)

I'm trying to work out how to approach building a "machine" to send and receive messages to WebSphere MQ, via Twisted.  I want it to be as generic as possible, so I can reuse it for many different situations that interface with MQ.

I've used Twisted before, but many years ago now and I'm trying to resurrect the knowledge I once had...

The specific problem I'm having is how to implement the MQ IO using Twisted.  There's a pymqi Python library that interfaces with MQ, and it provides all the interfaces I need.  The MQ calls I need to implement are:

  • initiate a connection to a specific MQ server/port/channel/queue‑manager/queue combination
  • take content and post it as a message to the desired queue
  • poll a queue and return the content of the next message in the queue
  • send a request to a queue manager to find the number of messages currently in a queue

All of these involve blocking calls to MQ.

As I'm intending to reuse the Twisted/MQ interface many times across a range of projects, should I be looking to implement the MQ IO as a Twisted protocol, as a Twisted transport, or just call the pymqi methods via deferToThread() calls?  I realise this is a very broad question with possibly no definitive answer; I'm really after advice from those who may have encountered similar challenges before (i.e. working with queueing interfaces that will always block) and found a way that works well.

‑‑‑‑‑

參考解法

方法 1:

If you're going to use this functionality a lot, then having a native Twisted implementation is probably worth the effort.  A wrapper based on deferToThread will be less work, but it will also be harder to test and debug, perform less well, and have problems on certain platforms where Python threads don't work extremely well (eg FreeBSD).

The approach to take for a native Twisted implementation is probably to implement a protocol that can speak to MQ servers and give it a rich API for interacting with channels, queues, queue managers, etc, and then build a layer on top of that which abstracts the actual network connection away from the application (as I believe mqi/pymqi largely do).

(by monch1962Jean‑Paul Calderone)

參考文件

  1. Using WebSphere MQ with Twisted (CC BY‑SA 3.0/4.0)

#ibm-mq #Python #twisted #pymqi






相關問題

將 WebSphere MQ 與 Twisted 一起使用 (Using WebSphere MQ with Twisted)

Websphere MQ 和高可用性 (Websphere MQ and High Availability)

Cara menghapus informasi header pesan di pesan yang dikelompokkan WebSphere MQ saat menerima di .Net client (How to remove the message header informations in WebSphere MQ grouped message while receving in .Net client)

crtmqm:找不到命令 (crtmqm: command not found)

Cách lấy tên hàng đợi MQSeries trong .NET mà không có 2068 (How to get MQSeries queuename in .NET without 2068)

在 MQ Java 客戶端中使用 SSL 時出錯 (Error while using SSL in MQ java client)

檢測客戶端連接上的 MQ 操作 (Detecting MQ operations on client connection)

JMS API 不能瀏覽消息,IBM API 可以 (JMS API cannot browse messages, IBM API can)

Web Sphere + IMessageConsumer + 接收消息 (Web Sphere + IMessageConsumer + receiving messages)

如何配置 IIB 10 以將 monitoring_event 消息作為持久性 MQ 隊列發布? (How to configure IIB 10 to publish monitoring_event messages as persisitent to persistent MQ queue?)

spring boot jms - 在@JmsListner 中發送和接收消息 (spring boot jms - send and receive message inside @JmsListner)

如何使用 JMeter 將 XML 文件發送到 IBM MQ? (How to send the XML file using JMeter to IBM MQ?)







留言討論