2009-04-27 10 views

Odpowiedz

6

Istnieje kilka zastrzeżeń ze Spring JMS.

  1. Absolutnie nie wolno używać Spring JMS bezpośrednio w fabryce połączeń JMS. Jest tak, ponieważ Spring - szczególnie JmsTemplate - otwiera połączenie, używa go dla jednej wiadomości, a następnie zamyka. Jest to poprawny wzorzec do użycia, gdy fabryka połączeń jest w rzeczywistości pulą połączeń. Ale jeśli to naprawdę tylko fabryka połączeń, zabijesz serwer pod obciążeniem. Zwykle jest to problem tylko wtedy, gdy używasz autonomicznej aplikacji, a nie wewnątrz kontenera J2EE, który zwykle ma adaptery zasobów lub inne rzeczy, które robią dla ciebie pulę. Spring dostarcza komponent bean SingleConnectionFactory, który ponownie użyje połączenia, ale nie jest to najlepsze rozwiązanie, gdy używasz serwera w klastrze i chcesz ładować swoje połączenia i pracę.
  2. Wiosenne interfejsy API są zaprojektowane do przetwarzania pojedynczych wiadomości naraz. W niektórych przypadkach, gdy możesz być w stanie poradzić sobie z serią komunikatów, może być lepiej użyć Springa, by dostarczyć ci fabryki połączeń i takie, ale zrób swój własny kod, by faktycznie wykonać komunikat I/O. W ten sposób możesz na przykład skonfigurować sesję transakcyjną, przetworzyć 100 wiadomości, a następnie zatwierdzić potwierdzenie jako partię. To powinno zmniejszyć obciążenie serwera, zakładając, że możesz to zrobić bezpiecznie.
+1

Czy "Spring APIs są zaprojektowane do przetwarzania pojedynczych wiadomości w czas " Nie sądzę. Jeśli używasz komunikatów, po prostu zdefiniuj DefaultMessageListenerContainer lub podobny, to wszystko, co musisz zrobić, to zdefiniować metodę onMessage, aby zużywać wiadomości. Możesz zwiększyć i zmniejszyć liczbę klientów w czasie wykonywania lub konfiguracji. –

5

Można sprawdzić Spring in Action. Zawiera rozdział poświęcony komunikacji za pomocą JMS od wiosny, które okazały się pomocne.

Powiązane problemy