2012-04-11 3 views
1

내 서비스 배포에는 웹 역할과 작업자 역할의 두 가지 역할이 있습니다. webrole의 on_start() 메소드에있는
은 작업자 역할의 인스턴스를 열거하고 일부 내부 끝점에서 TCP 연결을 만드는 것입니다.
하지만 작업자 역할의 인스턴스가 아직 시작되지 않았기 때문에 매우 자주 실패합니다.
질문은 내가 인스턴스를 시작했는지 알 수 있습니까? 아니면 작업자 역할의 인스턴스가 어떤 식 으로든 시작될 때까지 기다릴 수 있습니까? 는이 연결을 설정할 수 없습니다, 그냥 잘 때 내가 그렇게 루프로 건물 재시도 논리를 권하고 싶습니다 코드를하늘빛에 어쨌든 다른 역할에 대한 인스턴스가 시작되었는지 알 수 있습니까?

public override bool OnStart() 
     { 
      // For information on handling configuration changes 
      // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357. 

      ConnectionStatics.ConnectRouterToWorkers(); 
      Messaging.KeepReadingMessages.Start(); 

      return base.OnStart(); 
     } 

답변

1

다른 옵션은 작업자 역할을 시작할 때 대기열에 메시지를 넣는 것입니다. 그런 다음 대기열을 확인하고 메시지를 게시 할 때까지 기다릴 수 있습니다.

4

을 herez하고 나중에 다시 시도합니다. 이 문제는 시작 문제를 해결할뿐만 아니라 패브릭 컨트롤러가 인스턴스를 추가/제거 할 때 서비스 토폴로지의 변경 사항을 해결하는 데 도움이됩니다 (여러 가지 이유로 발생할 수 있음).

은 RoleEnvironmentChanging 및 RoleEnvironmentChanged 이벤트를 활용하여 인스턴스 추가/삭제시기 알림을 제공 할 수 있습니다. 그러나 나는 이것을 개인적으로 활용하지 않았으며 어떤 방법으로 이러한 방법이 특정 사례의 "준비 상태"를 반영 할 수도 있고 반영하지 않을 수도 있다고 말할 수 없습니다.

+0

k이 방법을 사용해 보겠습니다. –

관련 문제