结合使用WebSphere MQ和Twisted

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结合使用WebSphere MQ和Twisted相关的知识,希望对你有一定的参考价值。

我正在尝试弄清如何构建一个“机器”以通过Twisted向WebSphere MQ发送和接收消息。我希望它尽可能通用,因此我可以在与MQ接口的许多不同情况下重用它。

我以前使用过Twisted,但现在已经使用了很多年,我正在尝试复活我曾经拥有的知识...

我遇到的特定问题是如何使用Twisted实现MQ IO。有一个与MQ交互的pymqi Python库,它提供了我需要的所有接口。我需要实现的MQ调用是:

  • 启动到特定MQ服务器/端口/通道/队列管理器/队列组合的连接
  • 获取内容并将其作为消息发布到所需的队列中
  • 轮询队列并返回队列中下一条消息的内容
  • 向队列管理器发送请求以查找队列中当前的消息数

所有这些都涉及阻止对MQ的调用。

由于我打算在多个项目中多次重用Twisted / MQ接口,因此我应该将MQ IO实现为Twisted协议,Twisted传输,还是只通过deferToThread()调用pymqi方法( )来电?我意识到这是一个非常广泛的问题,可能没有明确的答案。我真的是从那些可能曾经遇到过类似挑战(即使用始终会阻塞的排队接口)并找到一种行之有效的方法的人那里得到建议。

我正在尝试弄清如何构建一个“机器”以通过Twisted向WebSphere MQ发送和接收消息。我希望它尽可能通用,所以我可以将其重用于许多不同的...

答案

如果要大量使用此功能,那么采用本地Twisted实现可能值得付出努力。基于deferToThread的包装程序工作量较小,但也将更难测试和调试,性能较差,并且在某些Python线程无法很好运行的平台(例如FreeBSD)上出现问题。

以上是关于结合使用WebSphere MQ和Twisted的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 WAS Server 和 websphere MQ 中需要队列?

在 WebSphere MQ 中配置死信队列

第十一章 发送和接收IBM WebSphere MQ消息

无法使用 JNDI 连接到 Websphere MQ

Websphere MQ 使用 JMS,关闭的连接卡在 MQ

Websphere MQ C++ 多线程