quickfix中的消息存储结构的目的是什么?我了解您可以通过消息存储界面记录所有传入和传出的修复消息,而quickfix提供了文件存储等多种实现。
我的问题是,为什么除了记录您的修复消息进行记录之外,您还关心消息存储?
我从这里克隆了项目:https://github.com/quickfix/quickfix/tree/master/src
并尝试执行脚本spec/generate.bat或GeneratorNET.rb,但我无法获取整个.cs文件,以便正确构建quickfix_net.dll c#包装器.
谁知道怎么做?
谢谢
我创建了两个类:Initiator和Acceptor.我想从发起者向接受者发送消息,然后处理收到的消息.我无法发送消息.
这是我的initiator.java
SocketInitiator socketInitiator = null;
String fileName = "conf/intiator.cfg";
try {
SessionSettings initiatorSettings = new SessionSettings(new FileInputStream(fileName));
Application initiatorApplication = new Initiator();
FileStoreFactory fileStoreFactory = new FileStoreFactory(
initiatorSettings);
FileLogFactory fileLogFactory = new FileLogFactory(
initiatorSettings);
MessageFactory messageFactory = new DefaultMessageFactory();
socketInitiator = new SocketInitiator(initiatorApplication, fileStoreFactory, initiatorSettings, fileLogFactory, messageFactory);
socketInitiator.start();
Message msg = new Message();
msg.setString(1, "Hello this is test Message");
SessionID sessionId = (SessionID) socketInitiator.getSessions().get(0);
Session.lookupSession(sessionId).logon();
initiatorApplication.onLogon(sessionId);
initiatorApplication.toApp(msg, sessionId);
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
这是应用程序接口的overRide消息.
public void toApp(Message …Run Code Online (Sandbox Code Playgroud) 当我尝试使用配置文件的URL调用SessionSettings的构造函数时,它只加载文件中存在的最后一个会话.
我试过打印我的代码从配置文件中读取的内容,但我得到了这个:
[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
Run Code Online (Sandbox Code Playgroud)
但我的配置文件包含更多:
[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 …Run Code Online (Sandbox Code Playgroud) 我正在创建一个使用 FIX.5.0SP2 的发起者和接受者。"58":"Incorrect BeginString"我在登录时、接受方(以及发起方的 fromAdmin)上收到错误。我相信我的配置是正确的:
发起人:
# 会话的默认设置 [默认] 连接类型=发起者 重新连接间隔=60 使用本地时间=Y 持久消息=Y 文件存储路径=./data 文件日志路径=./log HttpAcceptPort=9016 发件人CompID=X 开始字符串=FIXT.1.1 TransportDataDictionary=./support/FIXT11.xml [会议] 目标化合物 ID=Y 开始时间=00:00:00 结束时间=23:59:59 HeartBtInt=30 套接字连接端口=8599 SocketConnectHost=本地主机 DefaultApplVerID=FIX.5.0SP2 AppDataDictionary=./support/FIX50SP2.xml
受体:
# 会话的默认设置 [默认] 连接类型=接受者 重新连接间隔=60 使用本地时间=Y 持久消息=Y PostgreSQLStoreDatabase=quickfix PostgreSQLStoreUser=xx PostgreSQLStoreHost=本地主机 PostgreSQLStorePort=5432 PostgreSQLStoreUseConnectionPool=Y PostgreSQLLogDatabase=quickfix PostgreSQLLogUser=电子 PostgreSQLLogHost=本地主机 PostgreSQLLogPort=5432 PostgreSQLLogUseConnectionPool=Y 文件存储路径=./data 文件日志路径=./log HttpAcceptPort=9212 发件人CompID=Y 开始字符串=FIXT.1.1 TransportDataDictionary=./support/FIXT11.xml [会议] 目标化合物 ID=X 开始时间=00:00:00 结束时间=23:59:59 HeartBtInt=30 套接字接受端口=8599 DefaultApplVerID=FIX.5.0SP2 AppDataDictionary=./support/FIX50SP2.xml
我尝试了各种排列,但似乎都不起作用。
BeginString逻辑是否有错误?
谢谢,
马特
编辑:添加日志:
接受器事件日志:http://gist.github.com/mateodelnorte/167a83990801d7bb506e 接受者消息日志:http://gist.github.com/mateodelnorte/6d1f400a4e61875afee9 发起者事件日志:http://gist.github.com/mateodelnorte/a376c6cc0eb0f71bd222 发起者消息日志:http://gist.github.com/mateodelnorte/5c1b0c4ca2dda3e93b29
当请求 ICE TradeCaptureReport 消息时,FIX 消息被“截断”。这导致我们没有使用消息的“重复组”(如派对、腿详细信息)。
我们还没有使用任何数据字典。解决此问题的任何解决方案。