在Twisted中使用webspheremq

2024-05-20 14:10:40 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我以前用过Twisted,但很多年前现在,我正试图恢复我曾经拥有的知识。。。在

我遇到的具体问题是如何使用Twisted实现mqio。有一个pymqipython库与MQ接口,它提供了我需要的所有接口。我需要实现的MQ调用包括:

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

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

由于我打算在一系列项目中多次重用Twisted/MQ接口,我是应该将mqio作为Twisted协议、Twisted传输来实现,还是仅仅通过deferToThread()调用调用pymqi方法?我意识到这是一个非常宽泛的问题,可能没有明确的答案;我真的是在听取那些以前可能遇到过类似挑战的人的建议(例如,使用总是阻塞的排队接口),并找到了一种行之有效的方法。在


Tags: 方法端口服务器机器消息内容管理器队列
1条回答
网友
1楼 · 发布于 2024-05-20 14:10:40

如果您打算经常使用这个功能,那么拥有一个原生Twisted实现可能是值得的。基于deferToThread的包装器工作量会更少,但测试和调试也会更加困难,性能也会较差,并且在某些平台上Python线程工作得不太好(例如FreeBSD)时也会出现问题。在

本机Twisted实现的方法可能是实现一个协议,该协议可以与MQ服务器通信,并为它提供一个丰富的API,用于与通道、队列、队列管理器等进行交互,然后在该层之上构建一个层,将实际的网络连接从应用程序中抽象出来(我相信mqi/pymqi基本上就是这样做的)。在

相关问题 更多 >