java - Quickfix/j SessionSettings 仅从文件配置加载最后一个 session

标签 java quickfix fix-protocol quickfixj

当我尝试使用配置文件的 URL 调用 SessionSettings 的构造函数时,它仅加载文件中存在的最后一个 session 。

我尝试打印我的代码从配置文件中读取的内容,但我得到了:

[DEFAULT]
StartTime=00:00:00
EndTime=23:59:59
ReconnectInterval=5
TargetCompID=Server
SenderCompID=Client
DataDictionary=C:\config\FIX42.xml
HeartBtInt=30
FileStorePath=C:\logsBadisInitiatorStore
UseDataDictionary=Y
FileLogPath=C:\logsBadisInitiator
[SESSION]
StartTime=00:00:00
ConnectionType=acceptor
EndTime=23:59:59
BeginString=FIX.4.2
SocketAcceptPort=9878
TargetCompID=server1
SessionName=badisAcc289
SenderCompID=client1
SocketAcceptAddress=localhost
UseDataDictionary=N

但我的配置文件包含的内容远不止这些:

[default]
FileStorePath=data
SenderCompID=Client
TargetCompID=Server
FileLogPath=C:\logsBadisInitiator
StartTime=00:00:00 
EndTime=23:59:59
HeartBtInt=30
ReconnectInterval=5
UseDataDictionary=Y
DataDictionary=C:\config\FIX42.xml
FileStorePath=C:\logsBadisInitiatorStore

[session] 
SessionName=badisAcc2
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=test211
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=initiator
SocketConnectPort=9878
SocketConnectHost=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=badisAcc3
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=badisAcc4
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

[session] 
SessionName=badisAcc289
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=acceptor
SocketAcceptPort=9878
SocketAcceptAddress=localhost
StartTime=00:00:00
EndTime=23:59:59
UseDataDictionary=N

这是我编写的用于加载 sessionSettings 的代码:

String URLConfigFile="c:/config/initiatorSettings.txt";

sessionSettings = new SessionSettings(URLConfigFile);

System.out.println("sessionSettings tostring "+sessionSettings.toString());

如何解决这个问题?

最佳答案

根本原因 一个 session 的配置正在破坏另一个 session ,因为两个 session 具有相同的 SessionID。

两个 session 具有相同的 SessionID,该 SessionID 由 BeginString/SenderCompID/TargetCompID(有时还有其他字段)构造。

SessionSetting 实际上是每个 session 的各个字典的哈希值,以 SessionID 为键。由于您的 session 具有相同的 SessionID,因此它们会互相干扰。

您的配置也存在逻辑问题

如果您希望这两个 session 相互对话,则发送者/目标值应该相反,例如

[session] 
SessionName=badisAcc2
BeginString=FIX.4.2
SenderCompID=server1
TargetCompID=client1
ConnectionType=acceptor
...

[session] 
SessionName=test211
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=initiator
...

关于java - Quickfix/j SessionSettings 仅从文件配置加载最后一个 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29234412/

相关文章:

java - Eclipse 中的 GWT 编译错误

java - 在二叉树的节点类中递归

c# - QuickFIX/n - 启动器在登录阶段反复抛出错误

python - 使用 Python Quickfix 读取自定义消息中的重复组

fix-protocol - 修复协议(protocol) : How to handle 3-way OCO orders

quickfix - 10000 到 19999 之间的 FIX 协议(protocol)标签有什么用?

java - 在 JPanel 之间传递数据

java - 停止服务器请求

java - 在 Eclipse 中快速修复 JSP?

c# - 修复消息标签多次出现