我正在Scala / Akka建立证券交易模拟器。每个TraderActor
都有var wealth
随着演员通过市场交易而随时间波动。
在不同的时间间隔,我想查询所有TradingActors
以获取各自财富的当前价值'并将所有结果存储在数据库中以供以后分析。我怎么能做到这一点?
答案 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实现就是出于这个目的。