Akka中Typed和UnTyped Actors有什么区别? 什么时候用?

我试图阅读Akka文档,找出Typed和Untyped actor之间的确切区别。 什么时候用? 我不确定我错过了什么。 有人可以指点我相关的东西或者在这里提供这个问题的答案吗?

UntypedActor只是Actor的名称,但是作为Java API。

我很惊讶文档不够用:

Java的:

斯卡拉:

不同之处在于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/