Как начать (и в конечном итоге остановить) нить демона в пружине?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как начать (и в конечном итоге остановить) нить демона в пружине?

Сообщение Anonymous »

Я пишу приложение Spring-Boot для мониторинга файлов каталога и процессов, которые добавляются к нему. Я запускаю ветку, создав приложение -завод в моем приложении класс, который вызывает метод, аннотированный с @Async :

@SpringBootApplication
@EnableAsync
public class Application {

@Autowired
private DirectoryMonitorService directoryMonitorService;

public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}

@Bean
public ApplicationRunner startDirectoryMonitorService() {
return args -> directoryMonitorService.monitorSourceDirectoty();
}
}
< /code>

Вот код для DirectoryMonitorService < /code>, который имеет метод, аннотированный с @Async < /code>: < /p>

@Service
public class DirectoryMonitorService {

private static final Logger logger = LogManager.getLogger(DirectoryMonitorService.class);

@Value("${timeout}")
private long timeout;

@Autowired
private WatchService watchService;

@Async
public void monitorSourceDirectoty() {
while (true) {
WatchKey watchKey;
try {
watchKey = watchService.poll(timeout, TimeUnit.SECONDS);
} catch (ClosedWatchServiceException | InterruptedException e) {
logger.error("Exception occured while polling from source file", e);
return;
}

// process the WatchEvents

if (!watchKey.reset()) {
break;
}
}
}
}
< /code>

Наконец, вот где я создаю Threadpooltaskexecutor: < /p>

public class AsyncConfig extends AsyncConfigurerSupport {

private static final Logger logger = LogManager.getLogger(AsyncConfig.class);

private static final String THREAD_NAME_PREFIX = "Parser-";

@Value("${corePoolSize}")
public int corePoolSize;

@Value("${maxPoolSize}")
public int maxPoolSize;

@Value("${queueCapacity}")
public int queueCapacity;

@Override
public Executor getAsyncExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setCorePoolSize(corePoolSize);
executor.setMaxPoolSize(maxPoolSize);
executor.setQueueCapacity(queueCapacity);
executor.setThreadNamePrefix(THREAD_NAME_PREFIX);
executor.initialize();

return executor;
}

@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return (Throwable ex, Method method, Object... params) -> {
logger.error("Exception message - " + ex.getMessage());
logger.error("Method name - " + method.getName());
for (Object param : params) {
logger.error("Parameter value - " + param);
}
};
}
}
< /code>

Каким -то образом я чувствую, что это не самый элегантный способ запуска основного потока. У кого-нибудь есть лучшее решение? Кто -нибудь знает, какой интерфейс мне нужен для этого?

Подробнее здесь: https://stackoverflow.com/questions/409 ... pring-boot
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как начать (и в конечном итоге остановить) нить демона в пружине?
    Anonymous » » в форуме JAVA
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Как запустить (и в конечном итоге остановить) поток демона в Spring-Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    49 Просмотры
    Последнее сообщение Anonymous
  • Как запустить (и в конечном итоге остановить) поток демона в Spring-Boot?
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Почему родительская ViewModel в конечном итоге становится нулевой?
    Anonymous » » в форуме C#
    0 Ответы
    60 Просмотры
    Последнее сообщение Anonymous
  • Нормально ли в конечном итоге столкнуться с «взаимными правилами» при анализе рыночной корзины?
    Anonymous » » в форуме Python
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»