2017-06-29 7 views
1

Ich bin neu zu Akka und Springboot, während Suche meist Beispiele inject ActorSystem mit Springextention, versuchte ich wie unten und es funktioniert. Ich will nur wissen, ob es einen Unterschied gibt oder ich in Zukunft irgendwelche Probleme haben werde.ActorSystem in SpringBoot

Get ActorSystem wie unten:

@Bean 
    public ActorSystem getActorSystem() { 
     // Create the actor system. 
     final Config settings = ConfigFactory.load(); 
     return ActorSystem.create("my", settings); 
    } 

dann, wo genau wie unten verwenden erforderlich:

ActorSystem system = context.getBean(ActorSystem.class); 
ActorRef consumer = system.actorOf(Props.create(Consumer.class)); 

Antwort

0

Es ist völlig in Ordnung, wenn Sie keine Bohnen in Schauspieler verwenden. Andernfalls, wenn Sie Kontext innerhalb von Schauspielern verwenden und Sie context.getBean(SomeBean.class) in einem beliebigen Akteur aufrufen, können Sie Livecycle-Problem auftreten.

SomeBean möglicherweise noch nicht geladen und initialisiert. Spring weiß nicht, dass Ihre ActorSystem zuerst SomeBean initialisiert werden muss. Sie können Ihre ActorSystem alle Bohnen von allen Schauspielern verwendet, aber das ist zerbrechlich und schwer zu pflegen.

Persönlich finde ich Akka und (Spring + Java) nicht gut zu sein. Es gibt weniger Reibung, wenn Sie Akka mit Scala Sprache und Ökosystem (Bibliotheken) verwenden.