처리되지 않은 모든 세션에는 응용프로그램이 수신한 메시지를 수신확인하는 방법을 결정하는 수신확인 모드가 있습니다. 수신확인 모드에는 세 가지가 있으며 수신확인 모드의 선택사항은 응용프로그램의 디자인에 영향을 미칩니다.
이 주제의 내용은 응용프로그램이 WebSphere MQ 대기열 관리자 또는 WebSphere 서비스 통합 버스에 연결된 경우에만 해당됩니다. 브로커에 실시간으로 연결된 경우에는 해당되지 않습니다.
XMS JMS가 사용하는 메시지의 수신확인에 같은 메커니즘을 사용합니다.
세션이 처리되지 않은 경우 응용프로그램이 수신한 메시지를 수신확인하는 방법은 세션의 수신확인 모드에 의해 결정됩니다. 수신확인 모드에는 세 가지가 있습니다.
메시지가 응용프로그램과 동기로 전달되면 세션은 수신 호출이 완료될 때마다 메시지를 수신확인합니다. 메시지가 C 응용프로그램과 비동기로 전달되면 세션은 메시지 리스너 함수 호출이 완료될 때마다 메시지를 수신확인합니다. C++ 응용프로그램의 경우 세션은 메시지 리스너의 onMessage() 메소드 호출이 완료될 때마다 메시지를 수신확인합니다.
응용프로그램이 메시지를 수신했으나 수신확인에 실패하면 전달을 위해 메시지를 다시 사용할 수 있습니다. 그러므로 응용프로그램은 재전달된 메시지를 처리할 수 있어야 합니다.
이 수신확인 모드를 사용하면 세션에서 수행할 작업의 양이 줄어들지만 수신확인에 실패하면 전달을 위해 둘 이상의 메시지를 사용할 수 있습니다. 그러므로 응용프로그램은 재전달된 메시지를 처리할 수 있어야 합니다.
응용프로그램은 각 메시지를 따로 수신확인할 수 있습니다. 또는 메시지의 일괄처리를 수신하고 수신한 마지막 메시지에 대해서만 Acknowledge 메소드를 호출할 수 있습니다. Acknowledge 메소드를 호출하면 마지막 메소드 호출 후에 수신한 모든 메시지가 수신확인됩니다.
이러한 수신확인 모드와 함께 응용프로그램은 Session 클래스의 Recover 메소드를 호출하여 세션의 메시지 전달을 중지하고 재시작할 수 있습니다. 수신확인되지 않은 메시지는 재전달됩니다. 그러나 이러한 메시지는 이미 전달된 것과 같은 순서로 전달되지 않을 수 있습니다. 그 사이에 높은 우선순위의 메시지가 도착할 수도 있고 원래 메시지가 만료될 수도 있습니다. 그리고 지점간 도메인에서 원래 메시지의 일부가 다른 응용프로그램에 사용되고 있을 수 있습니다.
응용프로그램은 메시지의 JMSRedelivered 헤더 필드 내용을 검사하여 메시지를 재전달할 것인지 결정할 수 있습니다. 응용프로그램은 Message 클래스의 Get JMSRedelivered 메소드를 호출하여 메시지의 재전달 여부를 결정합니다.