Share via


Service Broker 응용 프로그램 중지 및 시작

Service Broker 응용 프로그램을 일시적으로 중지해야 할 경우도 있을 수 있습니다. 예를 들어 큐에 대한 활성화 저장 프로시저의 업데이트된 버전을 설치하기 위해 사용 중인 응용 프로그램을 중지할 수 있습니다. 응용 프로그램을 중지하지 않고도 큐를 변경할 수 있지만 현재 실행 중인 활성화 저장 프로시저의 복사본은 처리할 메시지가 남아 있으므로 종료되지 않을 수도 있습니다. 이러한 경우에 큐를 중지하면 실행 중인 저장 프로시저가 즉시 종료됩니다. 서비스를 다시 시작하면 Service Broker는 업데이트된 활성화 저장 프로시저를 시작합니다.

이 섹션의 내용은 유지 관리 목적으로 일시적으로 응용 프로그램을 중지하는 작업과 관련되어 있습니다. 데이터베이스에서 영구적으로 서비스를 제거하는 방법은 Service Broker 응용 프로그램 제거를 참조하십시오.

서비스를 일시적으로 중지하려면 응용 프로그램에서 사용하는 큐의 상태가 OFF가 되도록 큐를 변경합니다. 큐 상태가 OFF가 되면 수신 작업에 큐를 사용할 수 없어 효과적으로 응용 프로그램이 중지됩니다. Service Broker가 해당 큐에 새 메시지를 배달하지 않아 응용 프로그램이 큐에서 메시지를 받을 수 없습니다. 응용 프로그램이 사용 불가능한 큐로부터 메시지를 받으려고 하면 Transact-SQL 오류를 받게 됩니다. 응용 프로그램은 대화 시 사용하는 큐의 사용 가능성 여부에 관계없이 대화 시 언제라도 END CONVERSATION을 호출할 수 있습니다. 그러나 Service Broker는 큐를 사용 가능할 때까지 원격 서비스로 End Dialog 메시지를 배달하지 않습니다.

중지된 큐에 메시지가 도착하면 Service Broker는 대상 큐를 사용 가능할 때까지 해당 데이터베이스의 전송 큐에 이 메시지를 보관합니다. Service Broker는 중지된 큐에 도착한 메시지를 오류로 간주하지 않으므로 보낸 사람에게 이를 알리지 않습니다. 큐를 사용 가능하게 되면 Service Broker는 전송 큐의 메시지를 서비스 큐로 배달합니다. 이때 배달 작업은 메시지의 일반 재시도 논리에 따라 수행됩니다. 전송 큐에서 메시지는 지연으로 표시되고 주기적으로 다시 시도됩니다. Service Broker는 메시지를 전송 큐에 보관하고 메시지가 큐와 같은 인스턴스에서 시작되었는지 아니면 네트워크로부터 도착했는지 여부에 관계없이 메시지를 지연시킵니다.

큐를 중지하더라도 큐에 있는 메시지의 대화 타이머와 대화 수명 타이머는 다시 설정되지 않습니다. 큐가 중지된 동안 두 타이머 중 하나가 만료되면 Service Broker는 큐가 다시 시작될 때 적절한 메시지를 생성합니다.

응용 프로그램을 다시 시작하려면 응용 프로그램이 사용하는 큐의 상태가 ON이 되도록 큐를 변경합니다. 그러면 큐가 시작됩니다. 큐에 활성화 저장 프로시저가 지정되어 있고 메시지가 포함되어 있을 경우 Service Broker는 큐가 시작되면 즉시 활성화 저장 프로시저를 시작합니다. 현재 큐를 사용할 수 있으므로 Service Broker는 큐가 중지되어 있는 동안 만료된 대화 타이머 및 대화 수명 타이머에 대한 메시지도 생성합니다. 활성화를 사용하지 않는 응용 프로그램의 경우 해당 응용 프로그램에 대해 정의되어 있는 시작 프로시저를 사용하여 응용 프로그램을 다시 시작합니다.