QuickFix/J 源代码研究(四)

本文深入探讨了QuickFix/J的核心组件与架构设计,详细解释了以Initiator为核心的系统组织方式及其各部分功能,包括IoSessionInitiator的结构与工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

QuickFix/J 源代码研究(四)

liyayawodeai@163.com

(四). QuickFix/J总体逻辑架构
1. QuickFix/J是以Initiator为核心,如下图所示

上图中各个模块的关系:
处于核心位置的是Initiator,具体如图上表示的一系列继承关系构成,正是Initiator将QuickFix/J的大多数的核心功能组合在一起,成为一个整体。而各个核心组件之间的关系非常松散,多数都可以由XXXFactory生成。Initiator由大约6核心个组件组成,分别是处理消息的EventHandlerStrategy,存储配置的SessionSettings,存储所有session的容器sessions,存储所有IoSessionInitiator的容器ioInitiators,SessionFactory,以及QuickFix/J客户端的“发动机”SessionTimerTask。SessionTimerTask在启动Initiator时触发,并持续一直运行,直到被取消运行为止,它定时检查Session中所有状态并做相关操作,细节请参考 QuickFix/J 源代码研究(一)中的A-5。

2. IoSessionInitiator的结构:
下图描述的是容器ioInitiators中每个元素IoSessionInitiator的结构:

这里有QuickFix/J中的另一台“发动机”ConnectTask,它通过Mina的底层IoConnector得到网络中的数据事件,触发IoHandler中的processMessage,逐层回调到用户,并驱动整个客户单Initiator工作。细节请参考 QuickFix/J 源代码研究(一)中的A-6和B。
在使用 QuickFix/J 搭建一个交易系统的客户端或服务器时,你需要遵循以下几个步骤: 1. **下载和添加依赖**: - 从QuickFix官网(http://quickfixengine.org/)下载最新版本的QuickFix库及其JDK版本的绑定QuickFix/J。 - 将库文件添加到项目构建路径中,如Maven或Gradle配置相应仓库。 2. **环境配置**: - 初始化QuickFix引擎实例,配置必要的设置,例如交易所代码、交易日志目录等。 ```java Settings settings = new DefaultSettings(); settings.set("SenderCompID", "YOUR_SENDER_ID"); settings.set("TargetCompID", "YOUR_TARGET_ID"); ``` 3. **定义应用逻辑**: - 创建一个MessageFactory,用于创建和解析QuickFix的消息。 - 实现Session接口或其子接口,定义OnLogon、OnMessageReceived等事件处理器,对收到的不同报文做出相应的处理。 ```java class MySession extends Session { @Override public void onMessage(String message) { Message parsedMessage = messageFactory.createMessage(message); // 处理消息逻辑... } } ``` 4. **启动Session**: - 启动Session并连接到服务器,可能需要提供IP地址、端口号等信息。 ```java try (Session session = new MySession()) { session.connect("SERVER_IP", PORT_NUMBER); session.start(); } catch (Exception e) { log.error("Error starting session:", e); } ``` 5. **错误处理和异常管理**: - 需要处理可能出现的连接错误、断开连接以及快速FIX报文格式错误等情况。 ```java session.onError(e -> log.error("Error occurred:", e)); ``` 6. **关闭Session**: - 当完成交互或者遇到问题时,记得关闭Session以释放资源。 ```java session.disconnect(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值