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 メッセージの受信

 

同期的なメッセージ受信

メッセージを同期的に受信するには、アプリケーションから明示的にキューをポーリングしてメッセージの有無を確認します。キューのポーリングは、定期的に、またはユーザーが特定のアクション ([再表示] ボタンのクリックなど) を開始したときに実行できます。

 ♦ メッセージの同期的受信 (.NET の場合)
  1. 着信メッセージを格納するメッセージオブジェクトを宣言します。

    QAMessage msg;
    QATextMessage text_msg;
  2. メッセージキューをポーリングして、メッセージを収集します。

    for(;;) {
        msg = mgr.GetMessageNoWait("queue-name");
        if( msg == null ) {
          break;
        }
        addMessage( msg );
      }
 ♦ メッセージの同期的受信 (C++ の場合)
  1. 着信メッセージを格納するメッセージオブジェクトを宣言します。

    QAMessage * msg;
    QATextMessage * text_msg;
  2. メッセージキューをポーリングして、メッセージを収集します。

    for( ;; ) {
        msg = mgr->getMessageNoWait( "queue-name" );
        if( msg == NULL ) {
          break;
        }
        addMessage(msg);
      }
 ♦ メッセージの同期的受信 (Java の場合)
  1. 着信メッセージを格納するメッセージオブジェクトを宣言します。

    QAMessage msg;
    QATextMessage text_message;
  2. メッセージキューをポーリングして、メッセージを収集します。



    if(mgr.start()) {
      for ( ;; ) {
        msg = mgr.getMessageNoWait("queue-name");
        if ( msg == null ) {
          break;
        }
        addMessage(msg);
      }
      mgr.stop();
    }
 ♦ メッセージの同期的受信 (SQL の場合)
  1. メッセージ ID を格納するオブジェクトを宣言します。

    begin
        declare @msgid varchar(128);
    
  2. メッセージキューをポーリングして、メッセージを収集します。

        loop
            set @msgid = ml_qa_getmessagenowait( 'myaddress' );
            if @msgid is null then leave end if;
            message 'a message with content ' || ml_qa_gettextcontent( @msgid ) || ' has been received';
        end loop;
        commit;
    end

    次の項を参照してください。