簡體   English   中英

Akka 中 Typed 和 UnTyped Actor 有什么區別? 什么時候用什么?

[英]What is the difference between Typed and UnTyped Actors in Akka? When to use what?

我試圖閱讀 Akka 文檔以找出 Typed 和 Untyped actor 之間的確切區別。 什么時候用什么? 我不確定我錯過了什么。 有人可以向我指出相關的內容或在這里提供這個問題的答案嗎?

UntypedActor 只是 Actor 的名稱,但作為 Java API。

以下是一些文檔鏈接:

爪哇:

斯卡拉:

不同之處在於 TypedActors 有一個靜態接口,該接口上方法的調用被轉換為消息發送。 UntypedActors 可以接收任何消息。

希望有幫助。

干杯,√

Actors (Untyped)

為了讓演員(Scala)接收消息,他們必須混合消費者特征。 例如,以下actor 類(Consumer1)實現了在Consumer trait 中聲明的endpointUri 方法,以便從file:data/input/actor Camel 端點接收消息。 Untyped actor (Java) 需要擴展抽象的 UntypedConsumerActor 類並實現 getEndpointUri() 和 onReceive(Object) 方法。

Actors (Typed)

類型化的 actor 也可以從 Camel 端點接收消息。 與僅實現單個接收或 onReceive 方法的(無類型)actor 相比,有類型的actor 可以定義多個(消息處理)方法,每個方法都可以從不同的 Camel 端點接收消息。 對於要作為 Camel 端點公開的類型化 actor 方法,它必須使用 @consume 批注進行批注。 例如,以下類型化的消費者 actor 定義了兩個方法,foo 和 bar。

參考

無類型actor 響應發送的消息,而有類型actor 響應方法調用(參數值是消息)。

類型化參與者模型用於為參與者定義嚴格的契約,這些參與者只能響應預定義的消息集。 在這種情況下,不需要將每條消息都封裝為一個對象; 類型參與者允許我們定義單獨的方法,這些方法接受合同定義的多個輸入。 在 Java 的說法中,類型化參與者在面向對象的世界中提供了 Java 接口。 [1]

[1] 阿卡精華

Akka 無類型演員“不創作”和“沒有有用的類型”。

這違背了我們使用 Scala 的真正原因:它是函數式編程的力量。 請參閱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/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM