6

この記事を読みました

そして、トピックが MQ でどのように機能するかという概念をまだ理解していませんでした。JMS では、トピックにメッセージを発行できることを知っています。トピックからメッセージを受信するには、まずトピックにサブスクライブする必要があります (受信フェーズでサブスクリプション名を使用)。

MQ でどのように機能しますか? (JMSのように)簡単なシナリオを書きたい:

  • 1.トピックに公開する
  • 2. トピックからの受信 - 失敗します (まだ購読していません)
  • 3.購読する
  • 4. 受け取る - 公開後に購読したため、受け取るものは何もありません
  • 5.公開する
  • 6. 受信 - 成功

    サンプル コード (.NET) があると助かります

  • 4

    1 に答える 1

    8

    同梱のサンプルコードはご覧になりましたか?デフォルトのインストールでは、次の場所にあります。
    C:\Program Files\IBM\WebSphere MQ\tools\dotnet\samples

    このMQPubSubSample.csプログラムは、マネージド コードとアンマネージド コードの永続サブスクリプションと非永続サブスクリプションの両方を示しています。いずれの場合も、最初にサブスクライブしてからパブリッシュしますが、質問で説明されているように、パブリッシュ/サブスクライブ/受信/パブリッシュ/受信のユース ケースに簡単に変更できます。(但し、まだ購読していないトピックからは受信できません。)

    サンプル コードのセクションの 1 つを次に示します。

      // Managed/nondurable
      string topicName = DEFAULT_TOPIC_STRING;
      string topicObject = null;
      int openOptionsForGet = MQC.MQSO_CREATE | MQC.MQSO_FAIL_IF_QUIESCING | MQC.MQSO_MANAGED | MQC.MQSO_NON_DURABLE;
      int destType = MQC.MQOT_TOPIC;
    
      try
      { 
        destForGet = mqQMgr.AccessTopic(topicName, topicObject, MQC.MQTOPIC_OPEN_AS_SUBSCRIPTION, openOptionsForGet);
    
        messageForPut = new MQMessage();
        messageForPut.WriteString(DEFAULT_MESSAGE_DATA);
    
        mqQMgr.Put(destType, topicObject, null, topicName, messageForPut);
    
        messageForGet = new MQMessage();
    
        destForGet.Get(messageForGet);
    
        string messageDataFromGet = messageForGet.ReadLine();
    
        if(!DEFAULT_MESSAGE_DATA.Equals(messageDataFromGet))
          Console.WriteLine("Incorrect Message Received.");
    
        destForGet.Close();
      }
      catch(MQException mqE)
      {
        Console.WriteLine("MQException caught. " + mqE.ToString());
      }
    

    あなたの質問は例として JMS を参照しています。IBM XMS - Extensible Message Service Client for .Net を使用するオプションがあることに注意してください。XMS は、トランスポートとして WMQ、WMB、または WAS を使用して .Net 経由で JMS API を実装するため、JMS コードをほとんど変更せずに使用できます。Message Service Client for .Net 2.0.0マニュアルでは、提供内容について説明しています。


    .NET 用
    メッセージ サービス クライアント .NET 用メッセージ サービス クライアントは、Java Message Service (JMS) API と同じ一連のインターフェイスを持つ、XMS と呼ばれるアプリケーション プログラミング インターフェイス (API) を提供します。Message Service Client for .NET には、.NET 準拠の任意の言語で使用できる XMS の完全に管理された実装が含まれています。XMS は以下をサポートします。

    • ポイントツーポイント形式のメッセージング
    • パブリッシュ/サブスクライブ形式のメッセージング
    • 同期メッセージ配信
    • 非同期メッセージ配信

    XMS アプリケーションは、次のタイプのアプリケーションとメッセージを交換できます。

    • XMS アプリケーション
    • WebSphere MQ JMS アプリケーション
    • ネイティブ WebSphere MQ アプリケーション
    • WebSphere デフォルト・メッセージング・プロバイダーを使用している JMS アプリケーション

    XMS アプリケーションは、次のメッセージング サーバーのいずれかに接続し、そのリソースを使用できます。

    • WebSphere MQ キュー マネージャー - アプリケーションはバインディング モードまたはクライアント モードのいずれかで接続できます。
    • WebSphere サービス統合バス - アプリケーションは、直接 TCP/IP 接続を使用することも、HTTP over TCP/IP を使用することもできます。
    • WebSphere Event Broker または WebSphere Message Broker のブローカー - メッセージは WebSphere MQ Real-Time Transport を使用してアプリケーションとブローカーの間で転送され、構成によっては、WebSphere MQ Multicast Transport を使用してメッセージをアプリケーションに配信できます。

    WebSphere MQ キュー・マネージャーに接続することにより、XMS アプリケーションは WebSphere MQ Enterprise Transport を使用して、WebSphere Event Broker または WebSphere Message Broker のブローカーと通信できます。あるいは、XMS アプリケーションで WebSphere MQ Publish/Subscribe ブローカーを使用することもできます。


    さらに詳しく調べたい場合は、サンプル XMS コードが、前述のネイティブ .Net サンプルの下のサブディレクトリにあります。サンプルについては、マニュアルの「XMS サンプル アプリケーションの使用」セクションで説明されています。

    .Net サポートは、v7 の時点で WMQ に統合されています。サンプルがない場合は、WMQ クライアントのインストールがバックレベルであるか、インストールが不完全です。Windows 用の最新の v7.0 WMQ クライアントは、SupportPac MQC7としてダウンロードできます。

    XMS サポートはSupportPac IA9Hとして提供されます。

    于 2010-12-23T14:51:39.070 に答える