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

SQL Anywhere 11.0.1 (中文) » QAnywhere » 编写 QAnywhere 客户端应用程序 » QAnywhere 消息地址

 

系统队列

存在一个名为 system 的特殊队列,该队列可接收 QAnywhere 系统消息。有两类消息可发送至系统队列:

示例

以下 C# 代码可处理系统消息和正常消息,这在您使用按需策略时会非常有用。假定您已经定义了 onMessage() 和 onSystemMessage() 消息处理方法(它们实现处理消息的应用程序逻辑)。

// Declare the message listener and system listener.
private QAManager.MessageListener _receiveListener;
private QAManager.MessageListener _systemListener;
...

// Create a MessageListener that uses the appropriate message handlers.
_receiveListener = new QAManager.MessageListener( onMessage );
_systemListener = new QAManager.MessageListener( onSystemMessage );
...

// Register the message handler.
mgr.SetMessageListener( queue-name, _receiveListener );
mgr.SetMessageListener( "system", _systemListener );

系统消息处理程序可以查询消息属性以确定消息包含的信息。消息类型属性指示消息是否包含网络状态通知。例如,对于消息 msg,您可以执行以下处理过程:

msg_type = (MessageType)msg.GetIntProperty( MessageProperties.MSG_TYPE );
if( msg_type == MessageType.NETWORK_STATUS_NOTIFICATION ) {
  // Process a network status change.
  mgr.TriggerSendReceive( );
} else if ( msg_type == MessageType.PUSH_NOTIFICATION ) {
  // Process a push notification.
  mgr.TriggerSendReceive( );
} else if ( msg_type == MessageType.REGULAR ) {
  // This message type should not be received on the
  // system queue. Take appropriate action here.
}

网络状态通知
有关推式通知的通知