2017-02-24 19 views
1

私はibmサイトに達しましたが、トリガーを使用するための実際のロジックを見つけることはできません。IBM MQでどのようにトリガーを使用できますか?

私は以下のコードを実行しましたが、どのようにしてトリガーからの証言を受け取ることができますか?

public void setTrigger() 
     { 
     try{ 
      Queue = QMGR.accessQueue(queueName, (MQC.MQOO_INQUIRE+MQC.MQOO_SET)); 
      Queue.setTriggerControl(1); 
      Queue.setTriggerType(2); 
      } 
     catch(Exception e){ 
      System.out.println("------------------------"); 
      System.out.println("trigger method"); 
      System.out.println("------------------------"); 
      System.out.println(e); 
      System.out.println("************************"); 
      } 
     } 

メッセージが届くと、どのようにして私を知ることができますか。

+0

をMQがメッセージを消費するためのプロセスをトリガできるようにするために使用されるトリガ:

セブンス、あなたが本当に望んでいる場合、メッセージコールバック(非同期)ではなく、読んで行くその後、トリガMQでした。場合によっては、トリガタイプでは、アプリケーションがキューをTRIGGERステータスに戻す必要があります。これは、投稿したコードが実行しようとしているように見えます。 – JoshMc

+0

MQから実際にキューからメッセージを消費するJavaプロセスを開始させたいのですか? – JoshMc

+0

はいキューにメッセージがあるときはいつでも、キューからメッセージを消費するJavaプロセスを開始します。 – Fresher

答えて

4

最初に、アプリケーション経由でトリガー設定を行わないでください。それは時間の無駄です。

は第二に、これらのMQ Webページを理解&をお読みください。

第三に、Javaアプリケーションのために、どのような環境変数を設定するバッチファイルやUnixのスクリプトを作成しますすなわちCLASSPATHに設定し、PROCESSのAPPLICIDフィールドにバッチファイルまたはUnixスクリプトを設定します。

第4に、キューとプロセスのMQSC定義を行った後、トリガー・モニターを開始するのを忘れないでください(そうしないと、何もトリガーされません)。

第1に、トリガータイプをFirstに設定した場合、トリガーされたアプリケーションがキューからすべてのメッセージを読み込んで終了することを確実にします。

第6に、トリガリング(トリガファースト)は、メッセージ間に大きなギャップがあり、メッセージのバースト間に大きなギャップがある場合にのみ適しています。毎秒または2秒ごとにメッセージを受信して​​いる場合は、アプリケーションが起動するため、起動が良好でないため、&プロセスが1秒または2秒ごとに終了します.Javaアプリケーションの場合は、常にJVMの読み込み時間があります。 Asynchronous consumption of IBM MQ messages

+0

バックアウトカウントとバックアウトしきい値を比較して、取り出されたメッセージが毒ではないことを確認することをお勧めしますか? – cschneid

+0

YesおよびPoisonメッセージは、システムのデッドレターキューではなく、アプリケーションバックアウトキューに配置する必要があります。 – Roger

関連する問題