메시지 플로우 처리를 다른 자원과 통합하려면 메시지 플로우 내의 노드 및 메시지 플로우 자체의 등록 정보를 구성해야 합니다.
입력 노드가 메시지를 수신할 때 시작되는 단일 트랜잭션 내에서 통합된 메시지 플로우가 실행되며, 모든 처리가 완료되면 확약되거나 롤백될 수 있습니다. 또한 데이터베이스와 상호 작용하는 노드가 데이터베이스 오류를 핸들링하는 방법을 제어할 수 있습니다.
메시지 플로우 및 노드를 구성하려면 다음을 수행하십시오.
트랜잭션 등록 정보를 다음 값으로 설정할 수 있습니다.
메시지 플로우에 의해 수행되는 모든 처리가 통합되게 하려면 이 값을 선택해야 합니다.
둘 이상의 ODBC 연결을 정의하면 데이터베이스 잠금 문제가 발생할 수 있습니다. 특히, 자동 트랜잭션성을 사용하는 노드가 데이터베이스 오브젝트(예: 테이블)가 잠기게 하는 INSERT 또는 UPDATE 등의 조작을 수행하고 후속 노드에서 다른 ODBC 연결을 사용하여 데이터베이스 오브젝트에 액세스하려고 하는 경우 영구 잠금(교착 상태)이 발생합니다.
두 번째 노드는 첫 번째 노드에서 발생한 잠금이 해제될 때까지 대기하지만 첫 번째 노드는 해당 조작을 확약하지 않으며 메시지 플로우가 완료되면 잠금을 해제합니다. 그러나 두 번째 노드는 첫 번째 노드의 데이터베이스 잠금이 해제될 때까지 두 번째 노드가 대기하기 때문에 잠금이 해제되는 상황은 발생하지 않습니다.
브로커를 사용하는 두 조작이 서로 충돌하기 때문에 DBMS 자동 교착 상태 회피 루틴에서 그러한 상황을 감지할 수 없습니다.
이런 종류의 잠금 문제를 피할 수 있는 두 가지 방법이 있습니다.
특정 조작에 의해 잠겨지는 데이터베이스 오브젝트 및 데이터베이스의 잠금 시간 종료 매개변수 구성 방법에 관한 정보는 데이터베이스 제품 문서를 참조하십시오.
아래 표에서는 입력 및 출력 노드의 특정 등록 정보 설정에 대한 응답으로 취하는 조치에 대한 요약을 제공합니다.
메시지 지속성 a | 입력 노드 트랜잭션 모드 | MQOutput 또는 MQReply 노드 트랜잭션 모드 | 전역으로 통합된 메시지 플로우 |
---|---|---|---|
예 | 예 | 자동 | 예 |
아니오 | 예 | 자동 | 예 |
예 | 아니오 | 자동 | 아니오 |
아니오 | 아니오 | 자동 | 아니오 |
예 | 자동 | 자동 | 예 |
아니오 | 자동 | 자동 | 아니오 |
임의 b | 임의 b | 예 | 예 |
임의 b | 임의 b | 아니오 | 아니오 |
각 입력 노드에 대한 디폴트는 예(Yes)이며, 이는 수신되는 메시지가 동기점 아래에서 처리됨을 의미합니다. 또한 메시지는 동기점 아래에서 전달되는 출력 노드로 송신됩니다. 출력 노드가 트랜잭션 모드 등록 정보를 갖고 있는 MQOutput 또는 MQReply 노드인 경우에만 이 작동을 변경할 수 있습니다.
입력 노드에서 트랜잭션 모드를 자동으로 설정한 경우, 수신되는 메시지가 지속으로 정의된 경우에만 동기점 아래에서 처리됩니다. MQOutput 노드로 송신된 메시지는 MQOutput 노드에서 명확하게 트랜잭션 모드를 변경하지 않았으면 동기점 아래에서 전달됩니다.
z/OS에서 트랜잭션은 전체적으로 통합됩니다. 메시지 플로우에 대한 통합 트랜잭션 등록 정보 설정은 무시됩니다. 통합은 항상 RRS에서 제공됩니다.