gpt4 book ai didi

java - SocketInitiator getSession 提供的 session 顺序与配置文件中的顺序不同

转载 作者:行者123 更新时间:2023-12-01 11:33:10 25 4
gpt4 key购买 nike

当我尝试通过包含 sessionConfig 的文件中存在的索引获取 sessionconfig 时(在我们的示例中为“InitiatorSettings.cfg”)

[default]
FileStorePath=data
FileLogPath=log
HeartBtInt=30
ReconnectInterval=5

[session]
SessionName=badisInit1
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server1
ConnectionType=initiator
SocketConnectPort=9878
SocketConnectHost=localhost
UseDataDictionary=N

[session]
SessionName=init0badis
BeginString=FIX.4.2
SenderCompID=client1
TargetCompID=server12
ConnectionType=initiator
SocketConnectPort=9878
SocketConnectHost=localhost
UseDataDictionary=N

[session]
SessionName=test211
BeginString=FIX.4.2
SenderCompID=badis
TargetCompID=server
ConnectionType=initiator
SocketConnectPort=9878
SocketConnectHost=localhost
UseDataDictionary=N

我以不同的顺序获取 session ,仅在前两个 sessionID 中:

 get session id FIX.4.2:client1->server12
get session id FIX.4.2:client1->server1
get session id FIX.4.2:badis->server

这是我用来加载 session 并打印它们的代码我不知道文件中和加载后的顺序不同是否正常,或者我的配置文件有问题..

        SessionSettings sessionSettings = new SessionSettings("InitiatorSettings.cfg");

ApplicationImp mainApplication = new ApplicationImp();

FileStoreFactory fileStoreFactory = new FileStoreFactory(sessionSettings);

FileLogFactory logFactory = new FileLogFactory(sessionSettings);

MessageFactory messageFactory = new DefaultMessageFactory();

socketInitiator = new SocketInitiator( mainApplication,
fileStoreFactory, this.sessionSettings, logFactory,
messageFactory);

for(int i=0;i<socketInitiator.getSessions().size();i++)
{
System.out.println("get session id "+socketInitiator.getSessions().get(i));
}

感谢您的帮助。

最佳答案

session 未排序是正常行为,因为 SessionID->Session 存储在 HashMap 中并在 getSessions() 方法上转换为列表。

来自SessionConnector(SocketInitiator的父类(super class))

public ArrayList<SessionID> getSessions() {
return new ArrayList<SessionID>(sessions.keySet());
}

(提醒一下,HashMap 不能保证 put() 调用的顺序。为此您需要 LinkedHashMap。)

除了修改核心代码之外,一个建议是添加一个属性,它将是 sessionID 的有序列表,并迭代该属性并在 getSessionMap() 中查找它

关于java - SocketInitiator getSession 提供的 session 顺序与配置文件中的顺序不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30261770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com