2014-03-31 60 views
4

我有一個需要與RabbitMQ集成的後端Scala應用程序。後端Scala應用程序異步執行長時間運行的任務。通過Web客戶端將執行任務的消息排入RabbitMQ。後端應用程序然後使用這些消息中的每一個,執行相應的長時間運行的任務。Scala與Rabbit MQ集成

Scala應用程序應該直接使用RabbitMQ的消息,並且只需使用Futures處理相應的任務?還是使用Akka Actors從RabbitMQ接收這些消息,然後執行長時間運行的任務更好?

什麼是每個方法的贊成和反對?

回答

0

Future對於您的用例與RabbitMQ Java客戶端結合使用聽起來更簡單。

我選擇演員訴期貨的模型是:更喜歡期貨,當我覺得我有一個很好的使用案例時(參見Good use case for Akka一些例子),轉向演員。例如,如果您試圖分批處理批處理工作負載(如鏈接的答案所述),演員可以很好地爲您的目的服務。

以下面的RabbitMQ Java示例爲起點,修改爲在期貨中工作,以便線程輪詢工作隊列不被阻止。如果你需要返回一些響應(RabbitMQ擅長這種情況,因爲它內置了correlationId的概念),我包含了到工作隊列和RPC示例的鏈接。

的Java RabbitMQ的例子:

Work Queues

Remote procedure call (RPC)