2012-01-04 2 views
0

내 Service Broker 디자인에서 비동기 호출을해야하고 백그라운드에서 수행 할 작업이 필요합니다 (SQL Server 내부에서만 테이블 업데이트).Service Broker : BEGIN DIALOG 문에서 'From'및 'To'절의 동일한 서비스 문

는 특정 지점의 요구 사항에 따라 고려 수행 할 수 있습니다

  1. 그것은 단방향 데이터 푸시의 종류입니다. SB 대기열에 메시지를 놓고 잊어 버리십시오. 승인이 필요하지 않습니다.
  2. 디자인에 관련된 데이터베이스는 하나뿐입니다. 여러 데이터베이스가 필요 없습니다.
  3. 메시지는 Stored Proc (이 SP는 응용 프로그램에서 호출 됨)를 사용하여 SB 대기열에 배치됩니다.

위의 사항을 살펴보면 하나의 서비스로 충분하기 때문에 2 개의 서로 다른 SB 서비스를 만드는 데 적합하지 않은 것으로 보입니다. SB 서비스가 하나만있는 시나리오를 설계했으며 대화 대화 상자를 만드는 동안 'From'& 'To'절에 동일한 서비스 이름을 지정했습니다. 프로그램이 SB 대기열에 데이터를 푸시합니다. 활성화 기는 연관된 저장 프로 시저를 활성화합니다. 잘 작동합니다.

BEGIN DIALOG CONVERSATION @RecordConversationHandle 
FROM SERVICE **UpdateQueueStatus** 
TO SERVICE '**UpdateQueueStatus**' 
WITH ENCRYPTION = OFF; 

위의 제안 된 디자인에 대한 제안 사항이 있으시면 언제든지 도와주세요. 더 나은 성능을 위해 디자인을 개선하기 위해 모든 제안/문제점 또는주의 사항이 필요합니다. & 확장 성이 크게 향상 될 것입니다.

답변

0

서비스 브로커는 대화를위한 것이지 대화를위한 것이 아닙니다. 새로운 무언가를 디자인하지 마십시오 (항상 대화가되는 데는 많은 이유가 있습니다)

메시지를 보내는 데 사용되는 마녀는 서비스 (Service1)를 만들 수 있으며 "대화 상자 끝내기"메시지를 수신하고 대화 상자를 종료합니다. 다른 (Service2) 마녀는 메시지를 받고 작업이 끝나면 대화 상자를 끝내고 메시지를 처리합니다.