Akka中Typed和UnTyped Actors有什么区别? 什么时候用?
我试图阅读Akka文档,找出Typed和Untyped actor之间的确切区别。 什么时候用? 我不确定我错过了什么。 有人可以指点我相关的东西或者在这里提供这个问题的答案吗?
UntypedActor只是Actor的名称,但是作为Java API。
我很惊讶文档不够用:
Java的:
- http://akka.io/docs/akka/1.2/java/typed-actors.html
- http://akka.io/docs/akka/1.2/java/untyped-actors.html
斯卡拉:
不同之处在于TypedActors具有静态接口,并且该接口上方法的调用将转换为消息发送。 UntypedActors可以接收任何消息。
希望有所帮助。
干杯,√
Actors (Untyped)
对于演员(Scala)来接收消息,他们必须混合消费者特征。 例如,以下actor类(Consumer1)实现endpointUri方法,该方法在Consumer trait中声明,以便从文件接收消息:data / input / actor Camel端点。 无类型的actor(Java)需要扩展抽象的UntypedConsumerActor类并实现getEndpointUri()和onReceive(Object)方法。
Actors (Typed)
类型化的actor也可以从Camel端点接收消息。 与仅实现单个receive或onReceive方法的(无类型)actor相比,类型化actor可以定义多个(消息处理)方法,每个方法都可以从不同的Camel端点接收消息。 对于要作为Camel端点公开的类型化actor方法,必须使用@consume注释进行注释。 例如,以下类型的消费者角色定义了两个方法,foo和bar。
参考
无类型的actor响应发送的消息,而类型化的actor响应方法调用(参数值是消息)。
使用类型化的Actor模型来定义可以仅响应预定义消息集的actor的严格契约。 在这种情况下,不需要将每条消息封装为一个对象; 类型化的actor允许我们定义接受合同定义的多个输入的单独方法。 用Java术语来说,类型化的actor在面向对象的世界中提供了Java接口。[1]
[1] Akka Essentials
Akka无类型的演员“不要撰写”和“没有用的打字”。
这打败了我们使用Scala的原因:它的function编程能力。 有关这种心态,请参见http://noelwelsh.com/programming/2013/03/04/why-i-dont-like-akka-actors/ 。
另外,请参阅在Scala中尝试改进此方法以匹配Haskell方式。
http://letitcrash.com/post/40198993865/makkros-first-step-towards-typed-channels http://letitcrash.com/post/45188487245/the-second-step-akka-typed-channels
似乎仍然在Akka实验或甚至掉线 – 不清楚。
这种类型化通道的想法很有意义,因为当尝试构建类型检查数据(分析)管道时会发生类似问题。
Akka Typed似乎是一个更安全的编程模型的伟大演变: https : //opencredo.com/akka-typed/