В моем приложении мне нужно обработать загруженные документы и поместить результаты обработки в БД.
Документы хранятся в файловой системе, а метаданные хранятся в БД.
Для каждого документа необходимо открыть и обработать файл с диска, а не обновлять метаданные в БД соответственно. Обработка может быть дорогостоящей и длиться долго.
То, что я планирую сделать это:Каков правильный способ запуска фоновой задачи в Play 2.1 (Java)?
- Span N задач, одна задача для обработки одного документа
- Каждая задача будет пойти и найти самый старый, «необработанный» документ
- Задача будет маркировать его как «в прогресс»в БД и начать ее обработку
- после обработки задачи документа будет обновлять метаданные и отметьте его в БД, как„обработаны“
- Задача будет перейти к шагу 2, после чего
Какое право/самый простой способ реализовать это использование Play и Akka, предполагающее применение, написано на Java, а не Scala? Также будут оценены примеры исходного кода.
Майкл, вы, очевидно, правы, но это всего лишь прототип приложения, он будет работать на одном экземпляре JVM. Я понял, что Play использует Akka, и что запросы на обслуживание и мои собственные задачи - все это просто задачи, выполняемые разными актерами с точки зрения Акки. Поэтому я даже думал, что «в Play приложения» на самом деле это «в Акке»? –
Справа. Используйте библиотеки Akka. Сена. Попросите актеров запустить фоновое задание. Но ради чистого дизайна предположим, что актеры не будут на одной машине. На самом деле, почему бы не запустить вторую JVM для фоновых задач. Это поможет вам создать чистый дизайн, который может потенциально масштабировать до 1000 машин. –