WebSphere Message Service Clients for C/C++ and .NET, Version 1.2 운영 체제: Linux, Windows

C에서 메시지 및 예외 리스너 함수 사용

C 응용프로그램은 메시지 리스너 함수를 사용하여 메시지를 비동기로 수신하고 예외 리스너 함수를 사용하여 연결 문제점을 비동기로 알립니다.

관련 개념
런타임에 처리할 수 있는 오류 조건

C에서 메시지 리스너 함수 사용

메시지를 비동기로 수신하려면 C 응용프로그램은 메시지 리스너 함수와 컨텍스트 데이터를 하나 이상의 메시지 처리자에 등록해야 합니다. 등록하기 위해 응용프로그램은 각 메시지 처리자의 xmsMsgConsumerSetMessageListener() 함수를 호출하고 메시지 리스너 함수와 컨텍스트 데이터에 포인터를 매개변수로 전달합니다.

메시지 리스너 함수는 사용자가 쓴 콜백 함수입니다. 메시지 처리자에 메시지가 도착되면 XMS 메시지 리스너 함수를 호출하여 메시지를 전달하고 포인터를 컨텍스트 데이터에 하나의 입력 매개변수로, 메시지의 핸들에 다른 매개변수로 전달합니다.

컨텍스트 데이터의 형식과 내용은 응용프로그램에 정의되며 데이터 자체는 응용프로그램이 소유하는 메모리를 사용합니다. 예를 들어 컨텍스트 데이터는 힙에 할당된 구조가 될 수 있습니다. 컨텍스트 데이터에는 메시지를 처리할 때 메시지 리스너 함수가 참조할 모든 정보가 들어 있습니다. XMS 컨텍스트 데이터를 복사하지 않으므로 응용프로그램은 XMS 메시지 리스너 함수를 호출할 때 컨텍스트 데이터를 사용할 수 있는지 확인해야 합니다.

비동기로 수신한 메시지에 사용되는 자원은 응용프로그램이 릴리스합니다. XMS 이러한 자원을 릴리스하지 않습니다.

메시지 처리자로 메시지의 비동기 전달을 중지할 경우 응용프로그램은 xmsMsgConsumerSetMessageListener() 함수를 다시 호출할 수 있습니다. 이 때 포인터를 메시지 리스너 함수에 전달하는 대신, 널 포인터를 매개변수로 전달합니다.

기존 메시지 리스너 함수의 등록을 취소하지 않고 새 메시지 리스너 함수와 컨텍스트 데이터를 메시지 처리자에 등록할 수 있습니다. 새 메시지 리스너 함수가 등록될 때 기존 메시지 리스너 함수가 실행 중이면 활성 메시지 리스너 함수가 정상적으로 완료되고 후속 메시지는 새 메시지 리스너 함수 호출을 통해 처리됩니다. 메시지 리스너 함수가 변경될 때 트랜잭션이 진행 중이면 새 메시지 리스너 함수 호출을 통해 트랜잭션이 완료됩니다.

서명을 포함하여 메시지 리스너 함수에 대한 자세한 정보는 MessageListener를 참조하십시오.

C에서 예외 리스너 함수 사용

예외 리스너 함수의 사용은 메시지 리스너 함수의 사용과 대체로 비슷합니다.

C 응용프로그램은 xmsConnSetExceptionListener() 함수를 호출하고 포인터를 예외 리스너 함수와 컨텍스트 데이터에 매개변수로 전달하여 예외 리스너 함수를 연결에 등록해야 합니다. 예외 리스너 함수는 사용자가 쓴 콜백 함수입니다. XMS 연결 문제점을 발견하면 XMS 예외 리스너 함수를 호출하고 포인터를 컨텍스트 데이터에 하나의 매개변수로, 오류 블록의 핸들에 다른 매개변수로 전달합니다.

컨텍스트 데이터에는 오류 블록을 처리할 때 예외 리스너 함수가 참조할 모든 정보가 들어 있습니다. 다른 경우 예외 리스너 함수에서 컨텍스트 데이터를 사용하는 방법은 메시지 리스너 함수에서 사용하는 방법과 같습니다.

서명을 포함하여 예외 리스너 함수에 대한 자세한 정보는 MessageListener를 참조하십시오.

이러한 방법으로 수신한 오류 블록에 사용되는 자원은 응용프로그램이 릴리스합니다. XMS 이러한 자원을 릴리스하지 않습니다.

연결 문제점의 비동기 보고를 중지할 경우 응용프로그램은 xmsConnSetExceptionListener() 함수를 다시 호출할 수 있습니다. 이 때 포인터를 예외 리스너 함수에 전달하는 대신, 널 포인터를 매개변수로 전달합니다.


Concept topic

이용약관 | 피드백

Timestamp icon마지막 갱신 날짜: 3 Mar 2006
(C) Copyright IBM Corporation 2005. All Rights Reserved.
이 Information Center는 Eclipse 기술 기반입니다. (http://www.eclipse.org 웹 사이트 참조)