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

在Grails中处理数据库支持的异步回调,grails,asynchronous,actor,promise,gpars,Grails,Asynchronous,Actor,Promise,Gpars,我一直致力于在Grails中实现一个基于交互式经纪人API的自动交易系统(这里简要概述:),时间比我愿意承认的要长。这是一种高频率的交易策略,所以它不像下100股的订单然后得到满足那么简单。这涉及到大量的研发工作,所以我的架构和设计一直都在不断变化和发展 在过去一个月左右的时间里,我们已经清楚地认识到,API的异步特性正在折磨着我。我在Grails中有一个预期位置的模型,但这不会自动反映经纪公司的实际状态。这是一个创建订单的过程,其中一些订单现在就被填满了,一些订单后来被填满了,而一些订单永远不

我一直致力于在Grails中实现一个基于交互式经纪人API的自动交易系统(这里简要概述:),时间比我愿意承认的要长。这是一种高频率的交易策略,所以它不像下100股的订单然后得到满足那么简单。这涉及到大量的研发工作,所以我的架构和设计一直都在不断变化和发展

在过去一个月左右的时间里,我们已经清楚地认识到,API的异步特性正在折磨着我。我在Grails中有一个预期位置的模型,但这不会自动反映经纪公司的实际状态。这是一个创建订单的过程,其中一些订单现在就被填满了,一些订单后来被填满了,而一些订单永远不会被填满。可能存在部分填充、取消或拒绝订单,或任何数量的其他错误。异步更新已经变成了一场噩梦:悲观的锁、丑陋的关系以及头寸、意图、订单、交易等之间的依赖关系。尽管如此,所有这些不合法、难闻的代码,有时我的内部模型与经纪账户的实际状态不同步。这是一个非常危险的情况

因此,我意识到我需要某种异步框架,使Grails和IBAPI能够毫无故障地保持完全相同的状态。我对GPAR、Akka、承诺和演员有些熟悉,但只是表面上;我对他们中的任何一个都没有实际操作经验。就在最近,我看到了Parse的Bolt框架任务,想知道这是否适合。我并不真正需要并行或多线程的计算或集合。我所要做的就是确保来自IB的异步回调始终正确地反映在Grails域类中。我希望正确的框架能让我删除我为解决这个问题而编写的大量难看的意大利面代码


我需要的是关于解决这个问题的正确框架、模型或体系结构的建议。我欢迎任何建议,无论我是否在上面提到过

在我看来,你可以在应用程序的设计中充分利用事件资源。你熟悉这个概念吗?我正在研究。谢谢你的提示@lukelazarovic我已经存储了来自IB的所有事务,这听起来像是ES上的一个开端。然而,它并没有真正解决未决事务的问题,这正是我的问题所在。我不仅需要保持在IB发生的事情的实际状态;我还需要跟踪尚未完成或部分完成的待定订单。所以这些不完全是事件,但它们是潜在的事件。这就是为什么我认为我需要更多的国家机器,比如演员或承诺。我想订单可能是另一个事件源,但这感觉很复杂。