이 주제는 IBM Business Automation Workflow Advanced 구성에만 적용됩니다.

동기/비동기 호출

컴포넌트가 비동기 구현이 있는 다른 컴포넌트를 동기식으로 호출할 때 발생하는 동기/비동기 호출 사용을 피하십시오.

런타임에 동기/비동기 호출이 발견되면 SCA(Service Component Architecture)는 자동으로 동기 호출을 비동기 호출로 변경하며 그러면 새 트랜잭션 경계가 작성되어 다음과 같은 하나 이상의 문제가 발생할 수 있습니다.

  • 트랜잭션 전파 부족
  • 많은 재시도로 인해 동일한 서비스를 여러 번 호출함
  • 호출의 기본 대기 시간을 초과하면 제한시간 초과됨
  • 스레드가 각 비동기 호출에 할당되고 응답을 대기할 때 차단된 스레드와 스레드 풀이 삭제됨

대부분의 동기/비동기 호출은 일반적으로 비동기 구현이 있는 다음 중 한 컴포넌트를 동기식으로 호출하는 컴포넌트가 있을 때 발생합니다.

  • 장기 실행 BPEL 및 BPMN 비즈니스 프로세스
  • 사용자 태스크
  • JMS 가져오기
  • MQ 가져오기
  • ServiceAsynchImpl 인터페이스를 구현하는 Java POJO 컴포넌트

예를 들어, Web Service 내보내기는 항상 동기 호출을 수행합니다. 내보내기가 장기 실행 BPEL 프로세스를 호출하면 동기/비동기 호출이 발생합니다. 마찬가지로 마이크로플로우는 항상 요청-응답 조작에 동기 호출을 수행합니다. 마이크로플로우가 요청-응답 조작에 대한 MQ 가져오기를 호출하면 동기/비동기 호출이 발생합니다.

일반적으로 동기/비동기 호출을 야기할 수 있는 다음 시나리오는 피하십시오.

  • 장기 실행 BPEL 또는 BPMN business 프로세스를 호출하는 Web Service 내보내기
  • MQ 또는 JMS 가져오기와 같은 메시지 바인딩 가져오기를 호출하는 Web Service 내보내기
  • 요청-응답 조작에 대한 장기 실행 BPEL 또는 BPMN 프로세스를 호출하는 BPEL 마이크로플로우
  • 요청-응답 조작에 대한 메시지 바인딩 가져오기(예: MQ 또는 JMS 가져오기)를 호출하는 BPEL 마이크로플로우

동기/비동기 호출이 발견되면 SystemOut.log 파일에 다음 경보 메시지가 표시됩니다.

000000ac Core          W   CWSCA2011W: Service Component Architecture (SCA) is switching a synchronous call to an asynchronous call.
Request will be sent in a new local transaction. Default timeout is 115000 milliseconds.

특정 애플리케이션 시나리오에 따라 동기/비동기 호출을 피할 수 있는 여러 접근법이 있습니다. 예를 들어, 요청-응답 조작에 대한 MQ에 대해 장기 실행 BPEL 프로세스를 호출하는 마이크로플로우가 있는 경우 동기/비동기 호출을 피하기 위해 잠시 지속되는 프로세스를 통합할 수 있습니다.

호출 스타일에 대한 일반 정보는 호출 스타일 주제를 참조하십시오.