有了一些Fix基本概念后,接下来继续学习Fix协议(主要来学习Session level协议),今天就以QuickFix的启动初始化来讲解,在QuickFix启动初始化其间,都涉及了哪些重要的Fix 协议内容.
名词:
Acceptor ,通信双方,服务器所在方initiator,通信双方,客户端所在方Fix connection (Fix连接),官方文档说明一般包括3个部分,登陆,交换信息,退出,个人觉得还应该包括物理网络连接.Fix Session(Fix 会话),官方文档说明Fix Session可以有一个或多个Fix connecion组成.即Fix session可以多次登陆.它是一个逻辑的概念.一个Fix Session一般会有几个重要标示以区分一个Fix Session,如,包含Fix版本号字符串(如:FIX.4.2),发送者ID,接受者ID等),这样Fix Session每发送一个消息时候,消息头里面的BeginString,SenderCompID,TargetCompID 被赋值.当消息通过Fix connecion的物理网络连接到达对端的时候,对端可以根据消息头里面的标示找到自己端的Fix Session去处理消息.
QuickFix 关键类:
1.quickfix.Application
quickfix.Application类型对象,因为quickfix.Application里面定义了几个方法
onCreate –>当一个Fix Session建立是调用
onLogon –>当一个Fix Session登录成功时候调用
onLogout –>当一个Fix Session退出时候调用
fromAdmin–>当收到一个消息,经过一系列检查,合格后,属于Admin 类型时候调用
fromApp–>当收到一个消息,经过一系列检查,合格后,不属于Admin 类型时候调用
toAdmin–>当发送一个admin类型消息调用
toApp—>当发送一个非admin(业务类型)消息调用
一般情况下,如果您的应用程序需要用到Quickfix 时候,你只需要定义自己的Application类,然后根据您自己的业务实现上述几个方法即可。
2. quickfix.MessageStoreFactory , quickfix.MessageStore
这2也是接口,主要用来给Fix Session持久化类型(如,用文件存储,数据存储,存储的内容包括,状态,创建时间,消息,及其自己维护的发送序列号和接受序列号等)
quickfix.MessageStoreFactory的有 quickfix.JdbcStoreFactory ,quickfix.FileStoreFactory 两个实现,
quickfix.MessageStore 也有2种实现。quickfix.JdbcStore,quickfix.FileStore .
其中JdbcStoreFactory 负责创建JdbcStore , FileStoreFactory负责创建FileStore
quickfix 默认用文件存储,因为文件存储效率高。
如果你想自定义持久方式,你可以自己定义MessageStoreFactory的实现,并且自定义一种MessageStore
3.quickfix.LogFactory ,quickfix.Log
这2个也是个接口,负责创建不同类型的Log日志。QuickFix 提供了3中实现
quickfix.ScreenLogFactory–>负责创建quickfix.ScreenLog,即日志输出在终端屏幕上。
quickfix.JdbcLogFactory–>负责创建quickfix.JdbcLog,即日志输出在数据库中.
quickfix.FileLogFactory–>负责创建quickfix.FileLog,即日志输出在文件系统中
如果你想自定义Log输出,就请自己定义一个LogFactory的实现和一个quickfix.Log实现。
4.quickfix.MessageFactory ,quickfix.Message
该接口负责创建 quickfix.Message ,由于Fix有多个版本,所以在Fix的不同版本有一个实现
quickfix.fix40.MessageFactory
quickfix.fix41.MessageFactory
quickfix.fix42.MessageFactory
quickfix.fix43.MessageFactory
quickfix.fix44.MessageFactory