如何查询大量的Akka演员并将结果存储在数据库中?

时间:2015-02-05 23:51:44

标签: scala akka

我正在Scala / Akka建立证券交易模拟器。每个TraderActor都有var wealth随着演员通过市场交易而随时间波动。

在不同的时间间隔,我想查询所有TradingActors以获取各自财富的当前价值'并将所有结果存储在数据库中以供以后分析。我怎么能做到这一点?

3 个答案:

答案 0 :(得分:1)

我会发送一个StoreMessage,告诉TraderActor通过wealth消息将StoreController值发送给StoreData actor ref。

然后StoreController会收到StoreData条消息,并在收到内容时存储它们的内容,或将它们路由到StoreWorker,这些StoreController会在接收时将其存储(制作{ {1}}路由器),或者在编写它们之前堆叠它们,或者任何其他适合您需要的策略。

您希望StoreController处理收到的wealth的方式主要取决于您的数据库,TraderActor的数量,您希望存储值的频率等。

答案 1 :(得分:1)

查询数百万名演员以获取他们拥有的价值并不是一个好主意,因为

  • 无论何时获得整个聚合值,这些值都将过时。
  • 您无法获得实时报告

所以,你需要有点像Kafka这样的分布式事件系统来在任何变化时将值推送到该系统。然后,您可以定义订阅它的Kafka的消费者并接收事件并聚合或可视化等。 通过这种方式,您将拥有实时报告系统,而无需设置任何cronjob以定期通过演员并检索其状态。

答案 2 :(得分:0)

我认为Akka附带的event bus实现就是出于这个目的。