2012-11-05 58 views
1

在Erlang中,可以發送消息並等待我的函數內下一行代碼中的所需響應。這使得將工作流程邏輯(編排邏輯)放在一個功能中變得很容易。我可以用akka java做同樣的事嗎?Akka接收塊

看來,所有的答覆都進入onRecieve回調。這意味着我永遠不能將我的工作流邏輯放入一個函數中,並且一旦我向演員發送消息,就需要從不同的函數onRecieve中獲取演員的答案。這再次殺死了我的一個函數,對我的工作流邏輯進行了批判。是這樣嗎?如果是這樣,我是否與akka scala有同樣的問題?

回答

2

不,你不能在Akka做同樣的事情,因爲這是Erlang唯一最有問題的特徵:它會導致內存泄漏和性能不佳。

但是,您可以:

A)生成一個新的演員來處理會話邏輯

B)使用ASK /?處理回覆

C)使用存儲功能,以避免處理一些消息,直到某些條件得到滿足

+0

感謝您的迴應。還有兩個問題?請您詳細說明爲什麼Erlang功能導致內存泄漏?任何鏈接?在完全不同的說明中,您是否知道什麼是我需要用於akka工作的最小嵌入式(ME vs SE)? – iCode

+0

「當消息與接收語句中的任何子句不匹配時會發生什麼情況?它會無限期地保留在進程郵箱中,導致內存泄漏,隨着時間的推移還可能導致運行時系統耗盡內存並導致崩潰。處理未知消息應該被視爲一個錯誤,這些消息不應該首先發送到這個進程,或者應該被處理,可能只是從郵箱中檢索並忽略它們。「 - http://bit.ly/RDO6Hf –

+0

有道理。既然你是一位專家,你能否介紹一下我最需要的嵌入式操作系統(ME和SE)是什麼? – iCode