2012-04-23 2 views
0

두 개의 다른 인스턴스에서 작동하는 많은 SSB를 구현 중입니다. 비동기 트리거를 기반으로하는 데이터 푸시 패턴입니다.브로커 서비스 전송 대기열 문제

내 SQL 정보는 다음과 같습니다. Microsoft SQL Server Management Studio 10.50.2500.0 Microsoft Analysis Services 클라이언트 도구 10.50.2500.0 Microsoft 데이터 액세스 구성 요소 (MDAC) 6.1.7601.17514 Microsoft MSXML 3.0 4.0 5.0 6.0 Microsoft Internet Explorer 9.0.8112.16421 마이크로 소프트 .NET 프레임 워크 2.0.50727.5448 운영 체제 6.1.7601

는 뭔가 내 모든 전송 큐가이 큐의 성능에 영향을 미칠거야, 그리고 내가했습니다 확실히 유형 http://schemas.microsoft.com/SQL/ServiceBroker/EndDialog

의 메시지로 가득 이상한 것 같다 발견 이 메시지를 제거하십시오.

1이 메시지를 끝내기 위해 보내는 큐에 판독기를 지정해야합니까?

2- 또는 대화를 끝내는 동안 수신 측에서 잘못된 것이 있습니까?

답변

3

현재 설계된 Service Broker 메시지는 항상 대화 상자입니다. 즉, 대화에 항상 두 명의 참가자가 있다는 의미입니다. 대화의 한쪽이 끝나면 END CONVERSATION을 호출하여 EndDialog 메시지 유형을 대화 상자의 다른 참가자에게 보냅니다. 이러한 메시지는 공간을 차지하지 않는 것 외의 다른 이유로 처리해야합니다. 큐에서 활성화 저장 프로 시저를 만들어이를 처리 할 수 ​​있습니다. 그렇게하면 자동으로 발생하므로 걱정할 필요가 없습니다.

+0

송신 대기열의 활성화 절차가 송신 성능에 영향을주지 않습니까? –

+0

최소한의 리소스 소모 (즉, 디스크, CPU)를 제외하면 왜 그런지 알 수 없습니다. 나는 여기서 최소한을 강조한다. 만약 당신이하고있는 모든 일이 이니시에이터에서 END CONVERSATION을 호출한다면, 이것은 사소한 일입니다. 그러나 그것에 대한 나의 말을 듣지 마십시오. 그것을 적어두고 그것이 어떻게 당신을 위해가는 지보십시오. 몇 가지 팁 : 1) 한 번에 하나의 활성화 sproc 만 활성화해야합니다. 2) 큐가 비게 될 때까지 (즉, 하나 이상의 메시지를 처리 ​​할 때까지) 수신을 수행하도록 sproc을 작성하십시오. –

+0

더 나은 오류 메시지 처리를 추가하십시오. –

관련 문제