2012-12-05 3 views
0

우리는 C# Windows 서비스를 실행하는 하나의 응용 프로그램 서버와 TIBCO EMS를 실행하는 하나의 서버가 있습니다. 두 서버가 모두 한 주 동안 다른 시간에 다시 시작됩니다.TIBCO EMS 재시도 로직

응용 프로그램 서버가 처음 온라인 상태로 돌아 왔을 때 EMS 서버가 다시 온라인 상태가 될 때까지 C# windwos 서비스가 EMS 서버에 계속 연결하는 것을 좋아합니다. (재시도 논리가이 시나리오에서 작동하도록했습니다.)

응용 프로그램 서버가 실행 중일 때 EMS 서버가 오프라인 상태가되면 (예 : C#의 EMS 클라이언트가 대기열의 수신 메시지를 듣고 있습니다), 가장 좋은 방법은 무엇입니까? 이 시나리오에 대한 재시도 논리를 수행합니까? 즉시 예외가 발생합니까?

감사 Windows Service 만 당신이 그것에 종속성을 추가 할 수 TIBCO EMS에 연결하기위한 것입니다 귀하의 경우에는

답변

0

. 그런 다음 TIBCO EMS 서비스가 중지/다시 시작될 때마다 Windows Service이 각각 중지/다시 시작됩니다. 단점은 TIBCO EMS을 시작할 때 Windows Service이 자동 시작되지 않습니다 (이 문제를 해결하기 위해 두 서비스를 함께 사용할 수 있는지는 잘 모르겠습니다).

아니면 TIBCO EMS에 대한 연결을 처리하는 클래스에 .NET의 타이머 클래스 중 하나 (예 : System.Timers.Timer)를 추가 할 수 있습니다. 그런 다음 연결이 닫히면 타이머를 시작하고 연결이 열린 후에 타이머를 중지합니다. 타이머는 지정된 시간 간격 후에 연결을 시도 할 수 있습니다.

1

연결 해제 알림을받는 방법은 무엇입니까? conneciton 객체의 Exception Listner 및 Exception Hanlder가 있습니다. 하지만 두 사람이 모두 실행되는 동안 네트워크 카드를 끄면 C#에서 그 중 일부를 잡을 수 없습니다.

그들 사이의 차이점은 무엇입니까?