2013-08-08 9 views
5

Pracuję na istniejącej aplikacji, która ma ten kawałek koduCo wybrać ThreadPoolTaskExecutor lub SimpleAsyncTaskExecutor w moim przypadku?

<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> 
     <property name="corePoolSize" value="50" /> 
     <property name="maxPoolSize" value="200" /> 
     <property name="queueCapacity" value="250" /> 
    </bean> 

mamy metodę, która jest przy użyciu powyższej taskExecutor do wykonania zadania particuar. (To zadanie powinno zostać ukończone, ale może być zakończone asycnchronsly)

To konkretne zadanie jest rzeczywiście odpowiedzialne za włożenie 100 dokumentów do bazy danych.

Więc planowałem użyć SimpleAsyncTaskExecutor zamiast ThreadPoolTaskExecutor.

Proszę dać mi znać, jeśli będzie to miało wpływ na działanie lub tworzyć żadnych problemów

Nasza aplikacja to wielowątkowy jeden, i będzie ok 700 użytkowników w każdej chwili.

więc nie wiem, jak zachowuje się w środowisku produkcyjnym (który może być w porządku w trakcie rozwoju)

Odpowiedz

0

O ile wiem, korzystanie z SimpleAsyncTaskExecutor ma sensu w przypadku, jeśli chcesz wykonać jakiś długi czas - wykonywanie zadań, np jeśli chcesz skompresować pliki dziennika na koniec dnia. W innych przypadkach, jeśli chcesz wykonać zadanie krótkotrwałe co n sekund lub minut, powinieneś użyć ThreadPoolTaskExecutor, ponieważ używasz zasobów systemowych.

Technicznie oba warianty będą działać. Ale użyłbym ThreadPoolTaskExecutor dla twojego zadania.

Powiązane problemy