Scala与Rabbit MQ集成

时间:2014-03-31 19:23:14

标签: scala rabbitmq actor

我有一个需要与RabbitMQ集成的后端Scala应用程序。后端Scala应用程序异步执行长时间运行的任务。执行任务的消息由Web客户端排队到RabbitMQ中。然后,后端应用程序会使用这些消息中的每一个,执行相应的长时间运行任务。

Scala应用程序应该直接使用来自RabbitMQ的消息,只需使用Futures处理相应的任务吗?或者,最好使用Akka Actors从RabbitMQ接收这些消息,然后执行长时间运行的任务?

每种方法的专业人士和成员是什么?

1 个答案:

答案 0 :(得分:0)

对于与RabbitMQ Java客户端结合使用的用例,

Future听起来更简单。

我选择演员与期货的模式是:当我觉得我有一个很好的用例时,更喜欢期货,转换为演员(有些例子见Good use case for Akka)。例如,如果您试图分割并征服批处理工作负载(如链接的答案所述),则演员可以很好地满足您的目的。

使用下面的RabbitMQ Java示例作为起点,修改为在future中工作,以便不阻止轮询工作队列的线程。我包含了工作队列和RPC示例的链接,以防您需要返回一些响应(RabbitMQ在这种情况下很好,因为它内置了correlationId的概念。)

Java RabbitMQ示例:

Work Queues

Remote procedure call (RPC)