Java QuickFIX/J-使用市场数据的最佳方式
我正在使用QuickFIX库连接到我的经纪人的修复服务器并发送订单。我的应用程序(QuickFIX启动器)通过使用RabbitMQ队列接收来自不同算法的orders消息,并使用FIX协议将其路由到我的代理,如下图所示: 我必须执行自定义订单执行,在决定发送的订单是限额还是止损限额之前,必须检查出价并询问特定证券。在通过FIX访问市场数据之前,我曾向 我只需要检查出价,并询问我发送订单的具体时间 现在我可以通过FIX访问市场数据,我想使用出价并要求使用它,因为价格在每一时刻都更接近证券的实际价格。但由于修复程序的工作方式,我不知道如何才能打这样的电话Java QuickFIX/J-使用市场数据的最佳方式,java,apache-kafka,rabbitmq,fix-protocol,quickfixj,Java,Apache Kafka,Rabbitmq,Fix Protocol,Quickfixj,我正在使用QuickFIX库连接到我的经纪人的修复服务器并发送订单。我的应用程序(QuickFIX启动器)通过使用RabbitMQ队列接收来自不同算法的orders消息,并使用FIX协议将其路由到我的代理,如下图所示: 我必须执行自定义订单执行,在决定发送的订单是限额还是止损限额之前,必须检查出价并询问特定证券。在通过FIX访问市场数据之前,我曾向 我只需要检查出价,并询问我发送订单的具体时间 现在我可以通过FIX访问市场数据,我想使用出价并要求使用它,因为价格在每一时刻都更接近证券的实际价格
instrumentData = fixApi.getInstrumentData(this.params.getSymbol());
因为当我发送修复消息时,它不会返回一个“承诺”,即我可以在继续执行代码之前等待完成。我已经习惯了JavaScript和RESTAPI的工作方式,所以我有点被卡住了。我想知道我能通过FIX消费和生成市场数据的最佳方式是什么
我的想法
RabbitMQ不是一个好的选择,因为我可能希望同一条消息有多个使用者。也许卡夫卡是理想的选择。RabbitMQ是一个不错的选择,但市场数据是有价值的,一旦您使用它,最好将其存储在数据库中以备将来使用,如历史比较等。在我看来,最好使用列式数据库,而不是行式数据库(mySql)。并使用两阶段提交到队列和数据库。这只是一种观点。关于你的“承诺”(或Java中称之为未来):如果你真的想走这条路(即阻止执行,直到市场数据请求得到响应),那么你可以简单地基于你必须随每个请求发送的唯一ID。收到具有该唯一ID的回复后,如果您在相当长的时间内没有收到回复,您可以将结果或可能的错误返回给您的呼叫方。注意:您还可以在RabbitMQ中对多个使用者进行消息扇出。@ChristophJohn谢谢。我一定会看看未来
instrumentData = fixApi.getInstrumentData(this.params.getSymbol());