我正在尝试研究如何构建一个“机器”来通过 Twisted 向 WebSphere MQ 发送和接收消息。我希望它尽可能通用,因此我可以在与 MQ 接口的许多不同情况下重用它。
我以前用过 Twisted,但很多年前的现在,我正试图恢复我曾经拥有的知识......
我遇到的具体问题是如何使用 Twisted 实现 MQ IO。有一个与 MQ 接口的 pymqi Python 库,它提供了我需要的所有接口。我需要实现的 MQ 调用是:
- 发起与特定 MQ 服务器/端口/通道/队列管理器/队列组合的连接
- 获取内容并将其作为消息发布到所需的队列
- 轮询队列并返回队列中下一条消息的内容
- 向队列管理器发送请求以查找当前队列中的消息数
所有这些都涉及阻塞对 MQ 的调用。
由于我打算在一系列项目中多次重用 Twisted/MQ 接口,我应该将 MQ IO 实现为 Twisted 协议、Twisted 传输,还是只是通过 deferToThread() 调用调用 pymqi 方法? 我意识到这是一个非常广泛的问题,可能没有明确的答案;我真的很喜欢那些之前可能遇到过类似挑战的人的建议(即使用总是会阻塞的排队接口)并找到了一种行之有效的方法。