事务性消息传递以保证组中的所有消息要么全部传送,要么都不传送的方式,提供分组消息的功能。通常这称为一个事务。
实现事务性消息传递时,请创建一个名为事务性管理器的特殊 QAManager 对象。
创建事务管理器 (C++)
初始化 QAnywhere。
这一步骤与在非事务性消息传递中的步骤完全相同。
#include <qa.hpp>
QAManagerFactory * factory;
factory = QAnywhereFactory_init();
if( factory == NULL ) {
// fatal error
}创建事务性管理器。
QATransactionalManager * mgr;
mgr = factory->createQATransactionalManager( NULL );
if( mgr == NULL ) {
// fatal error
}与非事务性管理器一样,可以指定属性文件来自定义 QAnywhere 行为。本示例中,没有使用属性文件。
初始化管理器。
if( !mgr->open() ) {
// display message using mgr->getLastErrorMsg();
}现在,您就可以发送消息了。下面的过程在一个事务中发送两条消息。
在一个事务中发送多条消息 (C++)
初始化消息对象。
QATextMessage * msg_1; QATextMessage * msg_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() 方法。
SQL Anywhere Studio 9.0.2
版权所有 © 1989–2005 Sybase, Inc. 部分版权所有 © 2001–2005 iAnywhere Solutions, Inc. 保留所有权利。