시작 전략 선택

이 항목에서는 Service Broker 활성화에 대한 옵션을 설명합니다.

Service Broker에서는 비동기 지연 메시징을 지원합니다. 대화는 수 일, 수 개월 또는 수 년 동안 지속될 수 있으므로 대부분의 응용 프로그램은 활성화를 사용하여 동적으로 확장합니다. 이 섹션에서는 Service Broker를 사용하는 응용 프로그램을 시작하는 일반적인 전략에 대해 설명합니다.

시작 전략

응용 프로그램을 시작하는 전략은 대략 다음 네 개의 범주로 나뉩니다.

  • 내부 활성화

  • 이벤트 기반 활성화

  • 예약된 태스크

  • 시작 태스크

활성화 전략에 따라 각기 다른 이점이 있습니다. 응용 프로그램에서는 이러한 전략을 둘 이상 함께 사용할 수 있습니다. 예를 들어 대부분의 시간에는 적은 수의 큐 판독기와 함께 내부 활성화를 사용하고, 하루 중 특정 시간에는 더 많은 큐 판독기를 시작할 수 있습니다.

내부 활성화

Service Broker 내부 활성화를 사용할 경우 Service Broker 큐 모니터에서는 필요할 때 저장 프로시저를 직접 활성화합니다. 대개 이 방법이 가장 간단한 방법입니다. 저장 프로시저를 직접 활성화하면 응용 프로그램에 활성화를 관리하기 위한 추가 코드를 작성할 필요가 없습니다. 그러나 내부 활성화를 사용하려면 응용 프로그램을 SQL Server 저장 프로시저로 작성해야 합니다. 내부 활성화를 사용하는 경우에는 처리할 메시지가 더 이상 없을 때 응용 프로그램이 종료되도록 작성합니다.

이벤트 기반 활성화

일부 응용 프로그램은 특정 이벤트에 대한 응답으로 실행됩니다. 예를 들어 컴퓨터의 CPU 사용량이 일정 수준 이하가 될 때 응용 프로그램을 실행할 수 있습니다. 또는 새 테이블이 만들어질 때 로깅 응용 프로그램을 실행할 수 있습니다.

Service Broker 외부 활성화는 특수한 이벤트 기반 활성화입니다. 외부 활성화의 경우 응용 프로그램은 QUEUE_ACTIVATION 이벤트에 대한 응답으로 시작됩니다.

이벤트 알림에 의해 트리거될 수 있는 이벤트의 경우 이벤트 기반 활성화와 Service Broker 내부 활성화를 함께 사용할 수 있습니다. 이 경우 이벤트 알림을 받는 큐에서 내부 활성화를 사용합니다. 활성화 저장 프로시저에서는 알림 메시지를 받고 응용 프로그램을 시작합니다.

다른 이벤트의 경우 SQL Server 에이전트를 사용하여 SQL Server가 실행되는 컴퓨터와 동일한 컴퓨터에서 작업을 시작할 수 있습니다. 원격 컴퓨터의 WMI(Windows Management Instrumentation) 이벤트를 모니터링하는 응용 프로그램을 작성할 수 있습니다. 이 응용 프로그램에서는 SQL Server를 실행하는 컴퓨터에서 WMI 이벤트가 발생할 때 태스크를 시작할 수 있습니다.

이벤트 기반 활성화를 사용하는 경우 응용 프로그램은 일반적으로 처리할 메시지가 더 이상 없을 때 종료됩니다.

예약된 태스크

예약된 태스크를 사용하면 응용 프로그램은 설정된 일정에 따라 활성화됩니다. 이 전략은 일괄 처리 응용 프로그램에 편리합니다. 처리할 메시지가 더 이상 없을 때 예약된 태스크로 실행되는 응용 프로그램을 종료하거나 특정 시간에 프로그램을 종료할 수 있습니다.

예를 들어 공급자에 대한 주문을 처리하는 응용 프로그램에서는 주간에 메시지를 저장했다가 야간에 메시지를 처리하여 공급자에 대한 단일 주문을 생성할 수 있습니다. 이 경우 응용 프로그램에서는 SQL Server 에이전트 작업을 사용하여 매일 밤 특정 시간에 응용 프로그램을 시작할 수 있습니다.

시작 태스크

일부 응용 프로그램은 일반적으로 컴퓨터가 시작되거나 SQL Server가 시작될 때 한 번만 시작됩니다. 이러한 태스크의 예로는 SQL Server의 시작 저장 프로시저, Windows 시작 그룹의 응용 프로그램 또는 Windows 서비스가 있습니다. 이 경우 응용 프로그램은 실행 상태를 유지하며 메시지가 도착할 때 처리합니다. 계속 실행되는 응용 프로그램의 경우 메시지가 큐에 도착할 때 별도의 시작 시간이 필요하지 않습니다. 그러나 메시지가 없을 때도 응용 프로그램이 종료되지 않지 않으므로 해당 프로그램에서는 수행할 작업이 없는 경우에도 리소스를 사용합니다.

이 전략은 지속적인 메시지 스트림을 처리하며 시작 시 리소스 사용량이 비교적 적은 응용 프로그램에 유용할 수 있습니다.