0

Twistedを介してWebSphereMQとメッセージを送受信するための「マシン」を構築する方法を模索しています。できるだけ汎用的にしたいので、MQとインターフェイスするさまざまな状況で再利用できます。

以前はツイストを使用していましたが、何年も前に今、かつて持っていた知識を復活させようとしています...

私が抱えている特定の問題は、Twistedを使用してMQIOを実装する方法です。MQとインターフェイスするpymqiPythonライブラリがあり、必要なすべてのインターフェイスを提供します。実装する必要のあるMQ呼び出しは次のとおりです。

  • 特定のMQサーバー/ポート/チャネル/キュー-マネージャー/キューの組み合わせへの接続を開始します
  • コンテンツを取得し、メッセージとして目的のキューに投稿します
  • キューをポーリングし、キュー内の次のメッセージの内容を返します
  • キュー・マネージャーに要求を送信して、現在キューにあるメッセージの数を見つけます

これらはすべて、MQへの呼び出しをブロックすることを含みます。

さまざまなプロジェクトでTwisted/MQインターフェースを何度も再利用するつもりなので、MQ IOをTwistedプロトコルとして、Twistedトランスポートとして実装するか、deferToThread()呼び出しを介してpymqiメソッドを呼び出す必要があります。 ?これは非常に幅広い質問であり、決定的な答えはおそらくないことを私は理解しています。私は、以前に同様の課題に遭遇した可能性のある人(つまり、常にブロックされるキューイングインターフェイスを使用する)からのアドバイスを本当に受けており、うまく機能する方法を見つけました。

4

1 に答える 1

1

この機能を頻繁に使用する場合は、ネイティブのTwisted実装を用意することはおそらく努力する価値があります。に基づくラッパーdeferToThreadは作業量が少なくなりますが、テストとデバッグが難しくなり、パフォーマンスが低下し、Pythonスレッドが非常にうまく機能しない特定のプラットフォーム(FreeBSDなど)で問題が発生します。

ネイティブのツイスト実装を採用するためのアプローチは、おそらくMQサーバーと通信できるプロトコルを実装し、チャネル、キュー、キューマネージャーなどと対話するための豊富なAPIを提供し、その上に抽象化するレイヤーを構築することです。アプリケーションから離れた実際のネットワーク接続(mqi / pymqiが主に行うと私が信じているように)。

于 2012-08-03T10:54:40.337 に答える