2009-06-18 14 views
7

Jak określić, czy zdalna kolejka komunikatów jest exists? Dokumentacja stwierdza, że ​​metoda "Exists" nie działa w przypadku komputerów zdalnych.Testowanie, czy zdalna kolejka wiadomości istnieje (przy użyciu C#).

Poniższa nie jest ważna (wiem ścieżka kolejka jest dokładna, ponieważ jestem w stanie wysyłać wiadomości do kolejki):

 
if (!MessageQueue.Exists(@"FormatName:Direct=TCP:192.168.2.58\Private$\MyQueue")) 
    throw new InvalidOperationException("Queue does not exist"); 

Problem polega na tym, że wysyłanie wiadomości do adresu sieciowego, który nie kolejka odsłuchowa nie powoduje wyjątku. Wyjątek zgłoszony dla niepoprawnego adresu kolejki ma kluczowe znaczenie dla naszej aplikacji.

Odpowiedz

3

Jest artykuł na ten temat: Alternatywne podejście

Franka jest do korzystania z innych funkcji, które MSMQ zapewnia, takich jak negatywne potwierdzenia wiadomości z kolejek administracyjnych.

Co powinno się zdarzyć, że:

  • wiadomość zostanie dostarczona z powodzeniem do docelowego kolejki
  • negatywne potwierdzenia (NACK) zostaną zwrócone do kolejki administracji z klasą „The kolejka docelowa nie istnieje . " (MQMSG_CLASS_NACK_BAD_DST_Q) Alternatywnie można użyć ujemnego kroniki źródłowej , a po niepowodzeniu w dostarczaniu, powinna ona zobaczyć tę samą klasę NACK w odpowiedniej kolejce systemowej "Nieczytelne wiadomości" .

Podsumowując, nie sprawdzić, czy kolejka istnieje, ale zamiast obsługiwać niedostarczenie wiadomości powinno okazać się, że kolejka nie istnieje.

http://blogs.msdn.com/johnbreakwell/archive/2008/07/31/checking-if-msmq-queues-exist-is-hard-work-so-should-you-bother.aspx

0

Co się stanie, jeśli zdalny Q był kontrolowany przez stronę trzecią, w której nie masz kontroli?

Powinieneś mieć jakieś kontrole przekroczenia limitu czasu zamiast polegać na zdalnych informacjach.

Powiązane problemy