2012-02-18 32 views
16

Trong Play 1.0, chúng ta có thể xác định một số công việc mà sẽ được thực hiện ở chế độ nền:Hỗ trợ công việc trong Play 2.0 ở đâu?

@OnApplicatonStart 
@Every("1h") 
public class DataJob extends Job { 
    public void doJob() { 
     // ... 
    } 
} 

Nhưng tôi không thể tìm thấy nó trong Chơi 2.0. Tôi có nhớ điều gì không?

+0

@Peter Mortensen, cảm ơn vì đã khắc phục được những sai lầm trong câu hỏi của tôi. – Freewind

+0

Hy @Freewind bạn có giải pháp không? nếu có, xin vui lòng cho tôi biết là tốt. –

+1

@MuneebNasir Xem câu trả lời http://stackoverflow.com/a/32972812/342235 – Freewind

Trả lời

1

Cố định các liên kết trong câu trả lời được chấp nhận ban đầu đăng bởi JonasAnso

Để có được các chức năng của OnApplicationStart bạn có thể sử dụng toàn cầu onStart

Tại đây bạn có thể lên lịch diễn viên sử dụng Akka.

Hy vọng nó giúp.

+1

Có vẻ như từ Play 2.4, GlobalSettings không được chấp nhận? Giải pháp mới là gì? – ttt

6

Bạn có thể sử dụng dịch vụ lập lịch biểu trong akka.

http://doc.akka.io/docs/akka/2.0/java/scheduler.html

http://doc.akka.io/docs/akka/2.0/scala/scheduler.html

Về cơ bản bạn tạo một diễn viên thực thi logic của bạn nếu nó nhận được một thông điệp nhất định.

+2

Tôi nghĩ rằng đây không phải là tôi đang tìm kiếm. Các công việc không cần phải được kích hoạt bởi các hành động, họ chỉ làm việc trong nền. – Freewind

+1

Ví dụ, làm thế nào để sử dụng lịch trình của akka để thực hiện '@ OnApplicatonStart'? – Freewind

6

Đối với phần công việc acutal này có vẻ là cách trong Java,

Akka.system().scheduler().schedule(
     Duration.create(0, MILLISECONDS), // initial delay 
     Duration.create(5, MINUTES),  // run job every 5 minutes 

     new Runnable() 
     { 
      public void run() 
      { 
       .... 
      } 
     } 
    ); 
+2

Xem https://www.playframework.com/documentation/2.3.x/ScalaAkka để biết thêm chi tiết. – Josef

Các vấn đề liên quan