2012-05-09 2 views
1

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

Задача получает данные из базы данных и возвращает результат.

Поскольку только Job.in() и Job.now() return a promise результат, Как получить его из запланированного задания, которое выполняется каждые несколько минут.

Я использую playframework 1.2.5Rc1

+0

Есть ли причина, по которой вы не можете просто добавить свою логику к заданию, которое запрашивает базу данных? –

ответ

4

Вы должны хранить результат где-то в другом месте. Затем вы можете искать результаты, когда они вам понадобятся. На самом деле не имеет смысла «возвращать» результат из запланированной работы, потому что у вас никогда нет ссылки на них. API может вернуть обещание для первого запланированного задания, но это оставит все другие запланированные задания в темноте.

Одна вещь, которую вы могли бы сделать, - это сделать запланированные результаты работы в BlockingQueue. Затем в другом месте вашего кода вы можете вызвать метод take(), который блокирует, пока он не сможет вытащить что-то из очереди. Это было бы похоже на обещание, которое постоянно пополняется. Это также позволит очереди заполнить с необходимостью беспокоиться о немедленном обращении с каждым результатом.

+0

Я надеялся получить результат Promise, чтобы каждый раз, когда выполнялась задача, я мог что-то с этим сделать. – Gautam

+0

Полагаю, вы могли бы реализовать что-то подобное с помощью BlockingQueue? Пусть запланированное задание помещает результаты в очередь и использует 'take()' для блокировки, пока не будет результат. – Jeremy

+0

Спасибо, я попробую это – Gautam

Смежные вопросы