이벤트 고객이 이미터 팩토리 프로파일 설정을 변경할 수 있습니다.
이 타스크의 수행 목적 및 시기
이벤트를 전송할 때, 이미터에 대해 현재 구성된
현재 트랜잭션 모드, 동기화 모드 또는 둘 다를 대체하는 옵션을 지정할 수
있습니다. 이러한 설정은 처음에 이미터 팩토리 프로파일의 관리자에 의해 정의되지만,
나중에 이벤트 고객이 변경할 수 있습니다.
이미터는 모든 동기화 및 트랜잭션 모드를 지원하지 않을 수도
있습니다. 사용 가능한 모드는 다음 제한사항에 따라 달라집니다.
- 이미터가 지원하는 동기화 모드는 이미터 팩토리 프로파일로
정의합니다. isSynchronizationModeSupported() 메소드를 호출하여 특정
이미터가 지원하는 모드를 찾을 수 있습니다. 자세한 정보는
com.ibm.events.emitter.Emitter에 대한 Javadoc API 문서를 참조하십시오.
- 트랜잭션은 J2EE 컨테이너에만 지원됩니다.
지원되지 않는 모드를 사용하려는
경우 이미터가 적절하게 TransactionModeNotSupportedException 또는 SynchronizationModeNotSupportedException 예외를
처리합니다.
이 타스크의 단계
이미터 설정을 대체하려면
sendEvent(CommonBaseEvent, int, int) 메소드를 사용하십시오. String eventId = emitter.sendEvent(event,
synchronizationMode,
transactionMode);
매개변수는 다음과 같습니다.
- event
- 전송하려는 이벤트 오브젝트(CommonBaseEvent의 인스턴스).
- synchronizationMode
- SynchronizationMode 인터페이스가 정의하는 정수 상수입니다. 이 상수는
다음 상수 중 하나여야 합니다.
- SynchronizationMode.ASYNCHRONOUS(이벤트를 동기식으로 전송)
- SynchronizationMode.SYNCHRONOUS(이벤트를 동기식으로 전송)
- SynchronizationMode.DEFAULT(현재 이미터 설정 사용)
- transactionMode
- TransactionMode 인터페이스가 정의하는 정수 상수:
- TransactionMode.NEW(새 트랜잭션의 이벤트 전송)
- TransactionMode.SAME(현재 트랜잭션의 이벤트 전송)
- TransactionMode.DEFAULT(현재 이미터 설정 사용)
이벤트는 지정하는 옵션으로 전송됩니다. 이들 옵션은
전송되는 단일 이벤트에만 적용되므로, 이미터 설정은 변경되지 않으며
모든 후속 이벤트 제출에 영향을 주지 않습니다.
리턴되는 값인 eventId는
이벤트의 글로벌 고유 ID(CommonBaseEvent의 globalInstanceId 필드
값)입니다. 이벤트를 제출할 때 이벤트에 globalInstanceId가
없는 경우 이미터가 하나를 자동으로 지정합니다.
주: 이벤트를
이미터에 제출해도 필터 설정으로 인해 이벤트가 삭제될 수 있기 때문에
이벤트가 이벤트 서버로 전송된다고 보증되지 않습니다.
sendEvent()에 대한 성공적인 호출은 단지 이벤트가 이미터에 의해
성공적으로 처리되었음을 의미합니다.
다음 예는 새 트랜잭션에서 이벤트를 전송하도록 이미터 설정을
대체하지만, 동기화 모드는 대체하지 않습니다.
String eventId = sendEvent(event,
SynchronizationMode.DEFAULT,
TransactionMode.NEW);