2017-02-24 1 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 웹 페이지를 이해 &을 읽어

셋째, Java 응용 프로그램에 대한 환경 변수를 설정하는 배치 파일이나 유닉스 스크립트를 작성 즉 CLASSPATH를 설정하고 PROCESS의 APPLICID 필드에 배치 파일 또는 Unix 스크립트를 설정하십시오.

넷째, 대기열 및 프로세스에 대한 MQSC 정의를 수행 한 후에는 트리거 모니터를 시작하는 것을 잊지 마십시오 (그렇지 않으면 아무 것도 트리거되지 않습니다).

다섯 번째로, 트리거 유형을 첫 번째로 설정하면 트리거 된 응용 프로그램이 종료되기 전에 큐에서 모든 메시지를 읽는지 확인하십시오.

여섯째, 트리거링 (트리거 우선)은 메시지 사이에 큰 간격이 있거나 메시지 버스트 사이에 큰 간격이있는 경우에만 유용합니다. 매초 또는 2시에 메시지를 받으면 응용 프로그램이 시작되어서 트리거가 좋지 않습니다. & 프로세스가 1 초 또는 2 초마다 종료됩니다. Java 응용 프로그램 인 경우 항상 JVM로드 시간이 있습니다. Asynchronous consumption of IBM MQ messages

+0

메시지를 회수하는 것이 독이 아닌 것을 확인하기 위해 백 아웃 수와 백 아웃 임계 값을 비교하는 것이 좋습니다. – cschneid

+0

예 및 포이즌 메시지는 시스템의 배달 못한 편지 큐가 아닌 응용 프로그램 백 아웃 큐에 저장해야합니다. – Roger

관련 문제