.NET、C++、Java の API を使用して、非同期的にメッセージを受信するには、メッセージ・リスナ関数を作成して登録します。メッセージがキューに登録されると、このメッセージ・リスナ関数が QAnywhere によって呼び出されます。メッセージ・リスナは、着信メッセージを引数とします。メッセージ・リスナ内で実行する処理は、アプリケーションによって異なります。たとえば、TestMessage サンプル・アプリケーションのメッセージ・リスナは、TestMessage のメイン・ウィンドウのメッセージ・リストに着信メッセージを追加します。
受信メッセージの処理過程、メッセージの受信確認中に発生する可能性のあるアプリケーション・エラーを防ぐために、QAManager を EXPLICIT_ACKNOWLEDGEMENT モードで使用することをおすすめします。
QAManager が EXPLICIT_ACKNOWLEDGEMENT モードでオープンされている場合、メッセージは正常に処理された後でのみ onMessage メソッドで受信確認されます。この方法では、メッセージの処理中にエラーが発生した場合は受信確認が行われないため、メッセージを再受信できます。
QAManager が IMPLICIT_ACKNOWLEDGEMENT モードでオープンされている場合、onMessage に渡されたメッセージは、onMessage がメッセージを戻すときに暗黙的に受信確認されます。このため、メッセージの処理中にユーザ・アプリケーションでエラーが発生した場合でも受信確認が行われるため、メッセージは再受信できせん。
メッセージ・ハンドラ・メソッドを実装します。
private void onMessage(QAMessage msg) { // Process message. } |
メッセージ・ハンドラを登録します。
メッセージ・ハンドラを登録するには、メッセージ・ハンドラを引数として指定して QAManager.MessageListener オブジェクトを作成します。次に、QAManager.SetMessageListener 関数を使用して、MessageListener を特定のキューに登録します。次の例では、queue-name は QAManager オブジェクトが受信するキューの名前を示す文字列です。
MessageListener listener; listener = new MessageListener( onMessage ); mgr.SetMessageListener( "queue-name", listener ); |
MessageListener デリゲートとSetMessageListener メソッドを参照してください。
QAMessageListener インタフェースを実装するクラスを作成します。
class MyClass: public QAMessageListener { public: void onMessage( QAMessage * Msg); }; |
QAMessageListener クラスを参照してください。
onMessage メソッドを実装します。
QAMessageListener インタフェースには onMessage という名前のメソッドがあります。キューにメッセージが着信するたびに、QAnywhere ライブラリはこのメソッドを呼び出します。そのとき、着信メッセージが唯一の引数として渡されます。
void MyClass::onMessage(QAMessage * msg) { // Process message. } |
メッセージ・リスナを登録します。
my_listener = new MyClass(); mgr->setMessageListener( "queue-name", my_listener ); |
setMessageListener 関数を参照してください。
メッセージ・ハンドラ・メソッドと例外ハンドラ・メソッドを実装します。
class MyClass implements QAMessageListener { public void onMessage(QAMessage message) { // Process the message. } public void onException( QAException exception, QAMessage message) { // Handle the exception. } } |
メッセージ・ハンドラを登録します。
MyClass listener = new MyClass(); mgr.setMessageListener("queue-name", listener); |
QAMessageListener インタフェースとsetMessageListener メソッドを参照してください。
ml_qa_listener_queue という名前のストアド・プロシージャを作成します。queue はメッセージ・キューの名前です。
このプロシージャは、指定されたキューにメッセージが登録されるたびに呼び出されます。
ml_qa_listener_queueを参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |