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

SQL Anywhere 11.0.1 (Deutsch) » QAnywhere » QAnywhere-Clientanwendungen schreiben » QAnywhere-Nachrichten senden » Transaktionales Messaging implementieren

 

Transaktionales Messaging für C++-Clients implementieren

♦  So erstellen Sie einen Transaktionsmanager
  1. Initialisieren Sie QAnywhere.

    Dieser Schritt ist derselbe wie beim nicht-transaktionalen Messaging.

    #include <qa.hpp>
    QAManagerFactory *   factory;
    
    factory = QAnywhereFactory_init();
    if( factory == NULL ) {
        // Fatal error.
    }
  2. Erstellen Sie einen Transaktionsmanager.

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

    Wie bei nicht-transaktionalen Managern können Sie eine Eigenschaftsdatei erstellen, um das QAnywhere-Verhalten anzupassen. In diesem Beispiel wird keine Eigenschaftsdatei verwendet.

  3. Initialisieren Sie den Manager.

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

Sie sind nun bereit, Nachrichten zu versenden. Die folgende Prozedur versendet zwei Nachrichten in einer einzigen Transaktion.

♦  So senden Sie mehrere Nachrichten in einer einzigen Transaktion
  1. Initialisieren Sie Nachrichtenobjekte.

    QATextMessage *  msg_1;
    QATextMessage *  msg_2;
  2. Versenden Sie die Nachrichten.

    Der folgende Code versendet zwei Nachrichten in einer einzigen Transaktion:

    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 );
    }

    Die commit-Methode schreibt die aktuelle Transaktion fest und beginnt eine neue Transaktion. Diese Methode schreibt alle Aufrufe von putMessage()- und getMessage()-Methoden fest.

    Hinweis

    Die erste Transaktion beginnt mit dem Aufruf der open-Methode.

Siehe auch