Collection Contents 上一页 下一页 PDF

QAnywhere 用户指南

编写 QAnywhere 客户端应用程序

实现事务性消息传递


事务性消息传递以保证组中的所有消息要么全部传送,要么都不传送的方式,提供分组消息的功能。通常这称为一个事务

实现事务性消息传递时,请创建一个名为事务性管理器的特殊 QAManager 对象。

创建事务管理器 (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();
    }

现在,您就可以发送消息了。下面的过程在一个事务中发送两条消息。

在一个事务中发送多条消息 (C++)

  1. 初始化消息对象。

    QATextMessage *   msg_1;
    QATextMessage *   msg_2;
  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() 方法。


Collection Contents 上一页 下一页 PDF