2013-04-02 20 views
5

Mam do czynienia z falą timeoutów z TopicClient i myślę, że może to być związane z czasem życia obiektu i jego usuwaniem.Czy wątki Azure TopicClient są bezpieczne?

Używam klasę TopicClient z Microsoft.ServiceBus.Messaging i czytając to Best Practices Guide stany

Nie wolno zamykać fabryki wiadomości lub kolejki, tematyki i klientów abonamentowych po wysłaniu wiadomości, a następnie odtworzyć je kiedy wyślesz następną wiadomość. Zamknięcie fabryki wiadomości usuwa połączenie z usługą Service Bus, a nowe połączenie jest ustanawiane podczas odtwarzania fabryki.

To jest mylące dla mnie - ten dokument nie odnosi się specjalnie do TopicClient, ale zakładam, że to dotyczy. Być może to założenie jest nieprawidłowe?

Czy mogę po prostu przechowywać mój serwer TopicClient w statycznym elemencie członkowskim, aby uniknąć ponownego utworzenia połączenia? Czy jest lepszy sposób to obsłużyć? Czy istnieje jakiś mechanizm łączenia połączeń, który powinienem użyć zamiast tego?

Odpowiedz

7

The documentation indicates, że wszystkie statyczne i wystąpienie członków TopicClient są bezpieczne dla wątków.

Wszystkie publiczne statyczny (Shared w języku Visual Basic) elementy członkowskie tego typu są bezpieczne wątek. Członkowie instancji są gwarantowane być również wątku bezpieczne.”

Czytam cytat ty dołączonego jako że ma konkretnie obejmować TopicClient ponieważ mówi „kolejka klientów, temat i abonamentu”. Przeczytałem to jako QueueClient, TopicClient i SubscriptionClient.

W przypadku podsystemów przesyłania komunikatów używam standardu Gateway Pattern, który może być używany do obsługi okresu istnienia obiektu niezbędnego do pracy z podsystemem przesyłania komunikatów. W twoim przypadku obiekt Gateway będzie obsługiwał czas życia aplikacji TopicClient lub MessageSender/Receivers.

Pytam, czy widzieliście bardziej ogólne klasy MessageSender i MessageReceiver? Korzystanie z tych bardziej ogólnych obiektów podczas wysyłania oznacza, że ​​kod klienta wysyłający nie musi wiedzieć, czy wysyła do tematu, czy też do kolejki, może po prostu wysłać wiadomość na adres i nie obchodzi go to.

Powiązane problemy