2012-05-28 32 views
7

Cần một số lời khuyên về cách sử dụng EventBus do Akka cung cấp trong Java (không phải Scala!). Các tài liệu trên trang web có vẻ là không đầy đủ: http://doc.akka.io/docs/akka/2.0.1/java/event-bus.htmlVí dụ về sự kiện Akka EventBus cho Java

Theo như tôi hiểu, diễn viên nên được tạo ra để phản ứng về thông điệp cụ thể, như:

final ActorSystem actorSystem = ActorSystem.create("ServerEvents"); 
final ActorRef actor = actorSystem.actorOf(new Props(SeverEventHandler.class)); 
actorSystem.eventStream().subscribe(actor,ServerMessage.class); 

Nhưng bây giờ nó không rõ ràng làm thế nào để gửi một thông điệp tới xe buýt sự kiện.

Ai đó có thể chia sẻ một số hướng dẫn hay ví dụ/v.v.

+0

Tôi đã mở một vé để cải thiện các tài liệu, trong nghiên cứu khi đó API: http://doc.akka.io/api/akka/2.0.1/#akka.event.EventStream –

+0

Thực ra tôi rất thích xem ví dụ về điều đó. Hiện tại chúng tôi đang sử dụng EventBus của ổi để xử lý sự kiện GUI đơn giản. Tuy nhiên, đối với công việc nặng nhọc, tôi muốn giới thiệu Akka và loại bỏ hoàn toàn Guava. Đó là một chút daft để giữ hai thư viện xử lý sự kiện trong cùng một ứng dụng ... –

Trả lời

10

Tôi nghĩ rằng bạn chỉ là một dòng ngắn:

final ActorSystem actorSystem = ActorSystem.create("ServerEvents"); 
final ActorRef actor = actorSystem.actorOf(new Props(SeverEventHandler.class)); 
actorSystem.eventStream().subscribe(actor,ServerMessage.class); 

actorSystem.eventStream().publish(new ServerMessage()); <<== add this 

Trong khi ServerEventHandler nên một cái gì đó giống như

public class ServerEventHandler extends UntypedActor { 
    @Override 
    public void onReceive(final Object message) { 
    System.out.println("Got event in thread: " + Thread.currentThread().getName()); 
    System.out.println("Event: " + message); 
    } 
}