[AIX Solaris HP-UX Linux Windows][IBM i]

비ASF 모드로 트랜잭션 제한시간 회피

메시징 시스템을 비ASF 모드로 실행 중인 경우, 트랜잭션 제한시간이 원치 않게 초과되지 않도록 하려면 전체 트랜잭션 지속 시간 제한시간 트랜잭션 서비스 특성과 NON.ASF.RECEIVE.TIMEOUT 메시지 리스너 서비스 사용자 정의 특성을 올바르게 구성해야 합니다.

시작하기 전에

이 태스크에서 단계를 수행하려면 메시징 시스템을 비ASF 모드로 실행해야 합니다. ASF 모드를 비ASF 모드로 변경하려면 메시지 리스너 서비스 구성에 기술된 대로 NON.ASF.RECEIVE.TIMEOUT 사용자 정의 특성을 메시지 리스너 서비스에 추가하십시오.

이 태스크 정보

WebSphere® Application Server 버전 7 이상의 경우 리스너 포트는 안정화되었습니다. 자세한 정보는 안정화된 기능에 대한 항목을 참조하십시오. 리스너 포트 사용에서 활성화 스펙 사용까지의 WebSphere MQ 메시지 구동 Bean 배치 구성을 마이그레이션해야 합니다. [AIX Solaris HP-UX Linux Windows][IBM i]비ASF 모드에 대한 활성화 스펙을 구성하는 방법에 대한 자세한 정보는 비ASF 모드에 대한 활성화 스펙 구성을 참조하십시오. 그러나 애플리케이션이 WebSphere Application Server 버전 7 이전의 애플리케이션 서버에서 작업할 필요가 없음을 확신할 때까지 이러한 마이그레이션을 시작하지 않아야 합니다. 예를 들어, 버전 6.1의 일부 멤버와 이후 버전의 일부 멤버를 사용하는 애플리케이션 서버 클러스터가 있는 경우 클러스터의 모든 애플리케이션 서버를 이후 버전으로 마이그레이션하기 전에는 활성화 스펙을 사용하기 위해 해당 클러스터의 애플리케이션을 마이그레이션하지 않아야 합니다.

메시징 시스템을 비ASF 모드로 실행 중인 경우에 트랜잭션 제한시간이 원치 않게 초과되지 않도록 하려면 전체 트랜잭션 지속 시간 제한시간에 도달하기 전에 처리가 완료될 수 있을 정도로 처리 시간이 충분해야 합니다. 그러므로 NON.ASF.RECEIVE.TIMEOUT 메시지 리스너 서비스 사용자 정의 특성에 지정하는 값이 전체 트랜잭션 지속 시간 제한시간에 지정하는 값보다 더 작은지, 그리고 이 두 가지 특성 값 간의 차이가 MDB(Message-Driven Bean)의 onMessage() 메소드가 메시지를 처리하는 데 필요한 시간보다 더 큰지를 확인해야 합니다.

프로시저

  1. 전체 트랜잭션 지속 시간 제한시간 트랜잭션 서비스 특성을 구성하려면 애플리케이션 서버의 트랜잭션 특성 구성의 8단계를 완료하십시오.
  2. NON.ASF.RECEIVE.TIMEOUT 메시지 리스너 서비스 사용자 정의 특성을 구성하려면 서버 > 서버 유형 > WebSphere Application Server > server_name > [통신] 메시징 > 메시지 리스너 서비스 > 사용자 정의 특성을 클릭하십시오.
  3. NON.ASF.RECEIVE.TIMEOUT을 클릭하십시오. 일반 특성 페이지가 표시됩니다.
  4. 필드를 수정하십시오. NON.ASF.RECEIVE.TIMEOUT 값을 밀리초 단위로 지정해야 합니다. 100으로 나누어 초로 변환할 때, 지정하는 값이 전체 트랜잭션 지속 시간 제한시간에 지정한 값보다 적은지 그리고 두 특성 값 간의 차이가 MDB의 onMessage() 메소드가 메시지를 처리하는 데 걸리는 최대 시간(초)보다 큰지 확인하십시오.
  5. 확인을 클릭하십시오.
  6. 애플리케이션 서버를 중지했다가 다시 시작하십시오.

다음 예제에서 알 수 있듯이 전체 트랜잭션 지속 시간 제한시간NON.ASF.RECEIVE.TIMEOUT 값을 올바르게 구성하지 않으면 트랜잭션이 완료되기 전에 트랜잭션 제한시간이 초과될 수 있습니다. 트랜잭션이 작성되는 즉시 스레드가 receive() 메소드를 호출하기 시작하기 때문입니다. 다음 예제에서는 NON.ASF.RECEIVE.TIMEOUT110000밀리초(110초)로 설정하고, 전체 트랜잭션 지속 시간 제한시간120초로 설정하며 MDB의 onMessage () 메소드가 메시지를 처리하는 데는 15초가 걸립니다. 이 예제에서는 receive() 메소드의 제한시간이 거의 초과될 때까지 메시지가 대상에 표시되지 않는다고 가정합니다.
  1. 리스너 포트는 스레드 풀의 스레드를 시작하고 할당하며 스레드로 트랜잭션을 작성합니다.
  2. 스레드는 receive() 메소드를 호출하여 메시지를 청취합니다.
  3. 110초가 지나면 메시지가 대상에 표시됩니다.
  4. 스레드가 대상에서 메시지를 제거하고 MDB의 onMessage() 메소드를 호출하여 메시지를 처리하기 시작합니다.
  5. 10초 후에는 트랜잭션 제한시간에 도달하게 됩니다. 애플리케이션 서버가 해당 트랜잭션을 롤백 대상으로 표시합니다.
  6. 5초 후, onMessage() 메소드가 메시지 처리를 완료하고 트랜잭션 커미트를 시도합니다.
  7. 트랜잭션이 시작된 이후에 경과된 총 시간은 125초(메시지 대기 시간 110초 + 메시지를 처리하는 데 걸린 시간 15초)입니다. 이 경우에는 트랜잭션 제한시간이 더 길기 때문에 애플리케이션 서버가 트랜잭션이 커미트되지 않도록 하며 따라서 트랜잭션은 롤백됩니다.

주제 유형을 표시하는 아이콘 태스크 주제



시간소인 아이콘 마지막 업데이트 날짜: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tmb_nonasftimeout
파일 이름:tmb_nonasftimeout.html