C 사용자 정의 입력 노드 수명 주기

이 주제에서는 C 프로그래밍 언어로 작성된 사용자 정의 입력 노드 수명 주기의 여러 단계를 안내합니다. 다음과 같은 입력 노드 수명 주기의 단계가 포함됩니다.

등록

등록 단계 중에 브로커는 사용 가능한 자원과 이러한 자원을 제공할 수 있는 LIL을 발견합니다. 이 예에서 사용 가능한 자원은 노드입니다. 이 단계는 실행 그룹이 시작될 때 시작됩니다. LIL은 실행 그룹이 시동할 때 로드되고 브로커는 LIL을 조회하여 제공할 수 있는 자원을 찾습니다.

CciFactory 구조는 등록 단계에서 사용자 정의 노드가 cniCreateNodeFactory를 호출할 때 작성됩니다.

다음 API는 이 단계에서 브로커에 의해 호출됩니다.
  • biGetMessageflowNodeFactory
  • bipGetParserFactory
다음 API는 이 단계에서 사용자 정의 노드에 의해 호출됩니다.
  • cniCreateNodeFactory

인스턴스화

사용자 정의 입력 노드의 인스턴스는 mqsistart 명령이 실행 그룹 프로세스를 시작하거나 재시작할 때 또는 노드와 연관된 메시지 플로우가 전개될 때 작성됩니다.

이 단계에서는 다음 API가 호출됩니다.
  • cniCreateNodeContext. 이 API는 구성된 속성의 값을 보유할 사용자 정의 노드의 인스턴스화를 위한 메모리를 할당합니다. 사용자 정의 입력 노드를 사용하는 각 메시지 플로우마다 한 번씩 이 API가 호출됩니다.
  • cniCreateInputTerminal. 이 API는 cniCreateNodeContext API 내에서 호출되며 사용자 정의 입력 노드가 가지고 있는 입력 터미널을 브로커에 알리는 데 사용됩니다.
    주: 사용자 정의 입력 노드는 메시지 처리 노드로도 작동할 경우에만 입력 터미널을 가집니다. 이 경우에는 일반적으로 보다 복잡한 하나의 노드에서 두 조작을 조합하기 보다는, 별도의 사용자 정의 메시지 처리 노드를 사용하여 메시지 처리를 수행하는 것이 바람직합니다.
  • cniCreateOutputTerminal. 이 API는 cniCreateNodeContext API 내에서 호출되며 사용자 정의 입력 노드가 가지고 있는 출력 터미널을 브로커에 알리는 데 사용됩니다.
  • cniSetAttribute. 브로커는 사용자 정의 노드의 구성된 속성 값을 설정하기 위해 이 API를 호출합니다.

이 단계에서는 CciTerminal 구조가 작성됩니다. 이 구조는 cniCreateTerminal이 호출될 때 작성됩니다.

처리

브로커가 cniRun 함수를 호출하면 처리 단계가 시작됩니다. 브로커는 cniRun 함수를 사용하여 메시지가 정의된 도메인 판별, 해당 도메인의 관련 구문 분석기 호출을 포함한 메시지 처리 방식을 결정합니다.

스레드는 메시지 플로우의 스레드 풀에서 요구되고 입력 노드의 실행 메소드에서 시작됩니다. 스레드는 브로커의 큐 관리자에 연결되며, 이러한 연결은 스레드 지속 기간 동안 유지됩니다. 스레드가 할당되면 노드는 메시지를 수신할 때까지 기다리는 동안 메시지 처리 루프로 들어갑니다. 메시지가 수신될 때까지 루프에 그대로 있습니다. 메시지 플로우가 여러 스레드를 사용하도록 구성되어 있으면 스레드 디스패치가 활성화됩니다.

이제, 메시지 데이터가 다운스트림으로 전달될 수 있습니다.

이 단계에서 브로커는 다음 API를 호출합니다.
  • cniRun. 브로커는 입력 메시지 처리 방법을 결정하기 위해 이 메소드를 호출합니다.
  • cniSetInputBuffer. 이 함수는 입력 버퍼를 제공하거나, 입력 버퍼의 위치를 브로커에 알리거나, 이를 메시지 오브젝트와 연관시킵니다.

폐기

사용자 정의 입력 노드는 메시지 플로우가 다시 전개되거나 mqsistop이 실행 그룹 프로세스의 정지에 사용될 때 폐기됩니다. cniDeleteNodeContext 함수를 구현하여 노드를 폐기할 수 있습니다.

이 방법 중 하나로 사용자 정의 입력 노드가 폐기될 때는 노드가 사용하는 모든 메모리를 비우고 소켓과 같은 모든 보유 자원을 해제해야 합니다.

이 단계에서 브로커는 다음 API를 호출합니다.
  • cniDeleteNodeContext. 브로커는 입력 노드의 인스턴스를 폐기하기 위해 이 메소드를 호출합니다.
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
as01391_