我正在写一个基于Quickfix/N的FIX引擎,它侦听交易执行(ExecutionReport)并将它们保存到数据库中。QuickFix可选字段检查值存在
如果接收到的消息中不存在该值,则从API请求字段值将引发FieldNotFoundException。举例来说,如果帐户不存在,调用executionReport.Account将抛出异常。
由于有些字段是可选的,我必须在获取字段值之前明确检查字段值的存在。 我有两个可能性:
可能性1: executionReport.IsSetAccount() ? executionReport.Account : null;
可能性2:
try
{
return executionReport.Account.getValue();
}
catch (Exception e)
{
return null;
}
第一个选项是干净的,但我觉得很沉重,第二个可以推广到帮助器功能,但它违背了API的哲学,我感觉我做错了什么。
然后我的问题是:
- 有没有做这项工作的另一个清洁/正确的方法?
或者是我对Protocol/API的理解完全错误? 我有这种感觉,我没有以正确的方式解决问题。
非常感谢
我想你会遇到这个问题 - 有些字段是可选的。那是FIX协议的一个特性。几乎每个FIX消息都是一样的。有很多不同的交易方式... – rupweb