Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » QAnywhere » QAnywhere クライアントアプリケーションの作成 » QAnywhere メッセージの送信 » トランザクション指向メッセージングの実装

 

トランザクション指向メッセージングの実装 (C++ クライアントの場合)

 ♦ トランザクション指向マネージャーの作成
  1. QAnywhere を初期化します。

    この手順は、非トランザクション指向メッセージングの場合と同じです。

    #include <qa.hpp>
    QAManagerFactory *   factory;
    
    factory = QAnywhereFactory_init();
    if( factory == NULL ) {
        // Fatal error.
    }
  2. トランザクション指向マネージャーを作成します。

    QATransactionalManager *  mgr;
    mgr = factory->createQATransactionalManager( NULL );
    if( mgr == NULL ) {
        // Fatal error.
    }

    非トランザクション指向マネージャーの場合と同様に、プロパティファイルを指定することで QAnywhere の動作をカスタマイズできます。この例では、プロパティファイルは使用していません。

  3. マネージャーを初期化します。

    if( !mgr->open() ) {
       // Display message using mgr->getLastErrorMsg().
    }

これで、メッセージを送信する準備ができました。次に、1 つのトランザクション内で 2 つのメッセージを送信する手順を示します。

 ♦ 1 つのトランザクションでの複数のメッセージの送信
  1. メッセージオブジェクトを初期化します。

    QATextMessage *  msg_1;
    QATextMessage *  msg_2;
  2. メッセージを送信します。

    次のコードでは、1 つのトランザクション内で 2 つのメッセージを送信しています。



    msg_1 = mgr->createTextMessage();
    if( msg_1 != NULL ) {
      msg_2 = mgr->createTextMessage();
      if( msg_2 != NULL ) {
        if( !mgr->putMessage( "jms_1\\queue_name", msg_1 ) ) {
          // Display message using mgr->getLastErrorMsg().
        } else {
          if( !mgr->putMessage( "jms_1\\queue_name", msg_2 ) ) {
            // Display message using mgr->getLastErrorMsg().
          } else {
            mgr->commit();
          }
        }
        mgr->deleteMessage( msg_2 );
      }
      mgr->deleteMessage( msg_1 );
    }

    commit メソッドは、現在のトランザクションをコミットして、新しいトランザクションを開始します。このメソッドは、putMessage() メソッドと getMessage() メソッドのすべての呼び出しをコミットします。

    注意

    最初のトランザクションは、open メソッドの呼び出しで開始されます。

 参照