2017-08-19 25 views
0

我对RabbitMQ非常陌生,我想要消耗RabbitMQ中的多条消息,以便可以并行地完成工作,只有当任何演员完成任务时才发送确认因为不会丢失消息。我应该如何继续,我想使用AKKA的弹簧支持。在java中与AKKA演员一起使用RabbitMQ的多个消息

我可以使用actor作为使用者吗?或者它应该是一个普通的使用者,可以使用多个消息而不发送对任何消息的确认,或者应该是我有多个类/线程作为消费者实例化,一次发送一条消息而不是调用actor(但是,那样就好像它没有通过AKKA模型的演员或并行)。

回答

0

我还没有和RabbitMQ的本身的工作,但我可能会指定一个演员的调度,这将:

  1. 手柄RabbitMQ的连接。
  2. 接收消息(无论是一个接一个还是批量提高效率)。
  3. 通过为每条消息创建一个新的工作者,或通过向预先创建的工作者池发送消息,在工作者之间分配工作。
  4. 任务完成并提交结果后,接收工作人员的确认信息,并将确认发送回RabbitMQ。确认令牌可作为工作人员任务的一部分,因此无需跟踪调度程序内的映射。

一些需要考虑的额外内容为:

  • 监督策略:谁监督调度?谁监督工人?如果他们崩溃会发生什么?
  • 在分布式环境中运行时重新发送消息。