2012-02-28 39 views
18

我最近在做一些Akka,並想知道:我能阻止Akka的I/O而不會陷入大麻煩嗎?讓我們說我們有一個Actor來阻止I/O,因爲它使用了一個遺留的庫或者其他任何原因:我不能只爲那些大小合適的ThreadPool的Actors使用一個特殊的調度器,並且沒有阻止I/O阻止所有其他演員,因爲他們與不同的調度員運行?在Akka阻止IO

這有什麼缺點?從演員調用第三方HTTP-API的最佳方式是什麼?

回答

17

阻止IO通常是一個壞主意,尤其是在被動多線程環境中,所以您的第一步是儘量避免它一起使用,這意味着使用AsyncHttpClientHttpAsyncClient進行調查。

如果這不起作用,您至少可以通過給阻塞角色自己的線程來降低風險。這當然會很昂貴,你仍然有冒險填滿他們的郵箱,但這是使用阻塞IO的選擇。

您也可能想要查看IO Actor模塊,以獲得更爲原始的網絡IO接口。

希望任何這會有所幫助,

乾杯, √

+0

什麼用未來從演員之內? – sourcedelica 2012-02-28 22:49:35

+0

你仍然會阻止其中你沒有無限的線程。演員或期貨不是問題。 – 2012-02-29 08:50:04

+0

我不喜歡問,是否有一個例子使用HTTP調用作爲來自演員的客戶端,我只能找到一個使用未來並等待它的人 - 這也阻止了線程。 – Malax 2012-02-29 16:12:56