2013-05-13 16 views
5

Theo tài liệu, cách dễ dàng hơn để sử dụng một diễn viên là:Chơi 2 bể chủ đề: hồ mặc định VS Akka Pool với Java

Promise promiseOfInt = Akka.future (mới Callable() { công cộng Gọi số nguyên() { trả lại ...; }});

Nhưng tài liệu cũng nói rằng với API Java, nó sẽ luôn sử dụng cùng một nhóm luồng (chơi nhóm chủ đề mặc định).

Tài liệu nói rằng cũng có một hồ bơi Akka dành cho diễn viên. Làm cách nào để gửi tác vụ của tác nhân này đến nhóm chủ đề Akka, không chặn các tác vụ phổ biến của người dùng? Vì vậy, tôi có thể điều chỉnh hồ bơi Akka và giữ hồ bơi mặc định nhỏ.

Cảm ơn, Loic

+0

Bạn đã kiểm tra [Play thread pools doc] (http://www.playframework.com/documentation/2.1.1/ThreadPools) chưa? –

+0

Vâng, đó là lý do tôi hỏi câu hỏi này. Tôi thấy nó mơ hồ, có một hồ bơi Akka cho các diễn viên nhưng doc cũng nói rằng với Java API nó sẽ luôn luôn sử dụng cùng một hồ bơi thread (chơi hồ bơi mặc định thread). – Loic

+1

Bạn có thể tạo một ExecutionContext tùy chỉnh (tức là hồ bơi tùy chỉnh của các diễn viên) và gọi trực tiếp API Akka để sử dụng nó: http://doc.akka.io/japi/akka/2.1.2/akka/dispatch/Futures.html #future (java.util.concurrent.Callable, scala.concurrent.ExecutionContext) và http://doc.akka.io/docs/akka/2.1.2/java/futures.html –

Trả lời

1

Java Akka plugin (play.libs.Akka) về phía trước để các plugin Scala (play.api.libs.Akka), do đó bắt đầu một hệ thống diễn viên mới dựa trên cấu hình của ứng dụng. (Đó là tất cả các plugin.)

Vì vậy, bạn sẽ định cấu hình ActorSystem và tất cả điều phối viên của nó (bộ điều phối cũng là một ExecutionContext) bằng tệp application.conf bình thường của bạn dựa trên khóa cấu hình akka. Các điều phối viên này là các luồng mà tài liệu đang đề cập đến.

nhóm chủ đề mặc định được sử dụng khi bạn nhập play.api.libs.concurrent.Execution.default. Đây là API chỉ dành cho Scala. Trong Java, ExecutionContext này luôn được sử dụng tự động ngay khi bạn chạm vào tương lai và lời hứa. Hồ bơi chủ đề này thực sự dựa trên hệ thống diễn viên nội bộ của Play, được định cấu hình thông qua khóa cấu hình play.

Tóm lại, tất cả diễn viên của bạn, khi được tạo thông qua ActorSystem của plugin Akka, sẽ tự động sử dụng nhóm hồ bơi Akka (bên trong diễn viên bạn có thể tham khảo bằng cách sử dụng context.dispatcher).

Các diễn viên bên ngoài, bạn sẽ sử dụng nhóm mặc định/chủ đề nội bộ của Play.

+0

Cảm ơn điều này là rất rõ ràng! – Loic

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