2012-08-03 81 views
0

我在嘗試解決如何構建「機器」以通過Twisted向WebSphere MQ發送和接收消息。我希望它儘可能通用,所以我可以在與MQ接口的許多不同情況下重用它。使用帶有扭曲的WebSphere MQ

我以前用過的扭曲,但很多年前,現在我想復活的知識,我曾經有過...

我遇到的具體問題是如何在MQ IO使用來實現扭曲。有一個與MQ接口的pymqi Python庫,它提供了我需要的所有接口。該MQ調用我要實現的是:

  • 發起到特定的MQ服務器/端口/信道/隊列管理器/隊列組合
  • 取內容的連接,並張貼的消息到所需的隊列
  • 調查隊列和返回的下一條消息的內容在隊列
  • 發送到隊列管理器的請求,發現當前在隊列

所有這些涉及阻斷MQ呼叫的消息的數量。

因爲我打算在很多項目中重複使用Twisted/MQ接口,所以我應該將MQ IO作爲Twisted協議實現,作爲Twisted傳輸,或者只需通過pymqi方法調用deferToThread()調用?我意識到這是一個非常廣泛的問題,可能沒有明確的答案。我真正接受過之前可能遇到類似挑戰的人的建議(即處理總是阻塞的排隊接口),並找到了一種行之有效的方法。

回答

1

如果你打算使用這個功能很多,那麼有一個原生的Twisted實現可能是值得的。一個基於deferToThread的包裝將會減少工作量,但是在Python線程不能很好地工作的某些平臺上(例如FreeBSD),測試和調試,執行得並不好,也會遇到問題。

本地Twisted實現的方法可能是實現一個協議,該協議可以與MQ服務器通信併爲其提供豐富的API以與通道,隊列,隊列管理器等進行交互,然後在頂層構建一個圖層從應用程序中抽象出實際的網絡連接(正如我相信mqi/pymqi在很大程度上所做的那樣)。

+0

只是爲了記錄,WebSphere MQ使用的協議是封閉的。沒有真正的文檔說明它如何完全按字節逐個工作。 除了不同的RedBook或支持包提供的資源不足之外,理解協議的最佳資源是Wireshark的MQ解析器。但是這還遠遠沒有完成。專有協議的喜悅! : - / – 2012-09-06 17:51:28