在Grails中处理数据库支持的异步回调

时间:2014-02-07 00:56:52

标签: grails asynchronous actor promise gpars

我一直致力于在Grails基于Interactive Brokers的API(简要概述:Grails - asynchronous communication with 3rd party API)实施自动交易系统的时间超过我承认的时间。这是一种高频交易策略,所以它并不像下订单100股并被填补那么简单。涉及到很多R& D,所以我的架构和设计已经并且不断变化并随着时间的推移而不断发展。

过去一个月左右已经清楚的是,API的异步性质正在扼杀我。我在Grails中有一个我想要的位置模型,但这并不能自动反映经纪人的实际状态。有一个创建订单的过程,其中一些现在已经填满,有些之后会被填补,有些则永远不会。可能存在部分填充,取消或拒绝订单或任何其他错误。异步更新变成了悲观锁,丑陋的关系以及位置,意图,订单,交易等之间的依赖关系的噩梦。然而,由于所有那些不优雅,有臭味的代码,有时我的内部模型不同步与经纪账户的实际状态。这是一个非常危险的情况。

所以,我意识到我需要某种异步框架,它允许Grails和IB API保持完全相同的状态而不会失败。我对Gpars,Akka,Promises和Actors有点熟悉,但只是在表面上;我没有任何动手经验。就在最近,我看到了Parse的Bolt框架任务,并想知道这是否合适。我的需求并不是计算或集合的并行或多线程。我所要做的就是确保来自IB的异步回调始终在Grails域类中正确反映。而且我希望正确的框架能够让我删除大量难以实现的意大利面条代码,而这些代码是我写的,试图解决这个问题。

我需要的是针对解决此问题的正确框架,模型或体系结构的建议。我欢迎任何建议,无论我是否在上面提到它们。

0 个答案:

没有答案