我正在使用 Quickfix/J 接收消息,但发生“已发送测试请求 TEST”。日志文件 (FIX.4.2-AB.event.log) 显示:
23:19:05: Sent test request TEST
23:19:32: Disconnecting: Timed out waiting for heartbeat
23:19:33: Initiated logon request
23:19:44: Disconnecting: Timed out waiting for logon response
23:19:45: Initiated logon request
23:19:56: Disconnecting: Timed out waiting for logon response ...
但我在另一个日志文件(FIX.4.2-AB.message.log)中找到了一些东西:
8=FIX.4.2|9=68|35=1|34=250|49=A|52=20140224-23:19:05.909|56=B|112=TEST|10=106
8=FIX.4.2|9=74|35=0|49=B|56=A|43=N|34=1320|52=20140224-23:19:23.381|112=TEST|10=130
这显然表明对方B已经将心跳发送回给我们。
而且 FIX.4.2-AB.messages.log 文件还在增长!!!!!!!!!!!!该文件继续接收消息,但 Quickfix/J 进程没有(在 onMessage() 方法中没有发生任何事情)!!!!
请帮助我了解为什么会这样?为什么收到心跳后还是断开连接,日志断开?
因为这个问题还没有解决。这是更新:
我的配置:
[default]
FileStorePath=/target/data/fixapplication
ConnectionType=initiator
SenderCompID=A
TargetCompID=B
SocketConnectHost=xxx.xxx.xxx.xx
StartTime=00:00:00
EndTime=00:00:00
HeartBtInt=30
ReconnectInterval=5
FileLogPath=logs/fix/
[session]
BeginString=FIX.4.2
SocketConnectPort=xxx
ValidateFieldsOutOfOrder=N
ResetOnLogon=Y
这是代码:
@Override
public void fromAdmin(Message message, SessionID sessionID) throws FieldNotFound,
IncorrectDataFormat, IncorrectTagValue, RejectLogon {
if (adminLog.isInfoEnabled())
adminLog.info("Inside fromAdmin(): " + message.getHeader().getString(MsgType.FIELD)
+ " ; " + message);
}
@Override
public void fromApp(Message message, SessionID sessionID) throws FieldNotFound,
IncorrectDataFormat, IncorrectTagValue, UnsupportedMessageType {
crack(message, sessionID);
}
@Override
public void onCreate(SessionID arg0) {
}
@Override
public void onLogon(SessionID session) {
if (adminLog.isInfoEnabled()) {
adminLog.info("Inside onLogon: Logon completed " + session.toString());
}
}
@Override
public void onLogout(SessionID sessionId) {
if (adminLog.isInfoEnabled()) {
adminLog.info("Inside onLogout: Logout completed " + sessionId.toString());
}
}
基本上我让Quickfix/J
自己处理连接。
问题是应用程序仍在继续接收消息但没有处理它们,并且日志文件显示它没有连接。所有消息都在 FIX.4.2-AB.message.log 中,这就是它不断增长的原因。
我发现了一些类似的案例:
http://www.quickfixj.org/jira/browse/QFJ-668
http://www.quickfixj.org/jira/browse/QFJ-624
http://quickfix-j.364392.n2.nabble.com/Timed-out-waiting-for-heartbeat-td365186.html
http://www.quickfixj.org/jira/browse/QFJ-759
不幸的是,他们都没有提供解决方案。所以请帮帮我。
第二次更新如下:
我提取日志文件(我是 A,对方是 B):
8=FIX.4.2|9=58|35=0|34=49|49=A|52=23:23:50.075|56=B|10=030|
8=FIX.4.2|9=58|35=0|34=50|49=A|52=23:24:20.074|56=B|10=019|
**8=FIX.4.2|9=67|35=1|34=51|49=A|52=23:24:46.074|56=B|112=TEST|10=047|**
**8=FIX.4.2|9=74|35=0|49=B|56=A|43=N|34=1103|52=23:24:59.060|112=TEST|10=125|**
8=FIX.4.2|9=75|35=A|34=1|49=A|52=23:25:14.076|56=B|98=0|108=30|141=Y|10=059|
8=FIX.4.2|9=74|35=A|49=B|56=A|43=N|34=1|52=23:25:27.076|98=0|108=30|10=004|
8=FIX.4.2|9=86|35=1|49=B|56=A|43=N|34=2|52=23:25:27.077|112=03/03/2014-07:25:27|10=117|
8=FIX.4.2|9=75|35=A|34=1|49=A|52=23:25:26.076|56=B|98=0|108=30|141=Y|10=062|
8=FIX.4.2|9=74|35=A|49=B|56=A|43=N|34=1|52=23:25:39.064|98=0|108=30|10=004|
8=FIX.4.2|9=86|35=1|49=B|56=A|43=N|34=2|52=23:25:39.065|112=03/03/2014-07:25:39|10=120|
8=FIX.4.2|9=75|35=A|34=1|49=A|52=23:25:38.076|56=B|98=0|108=30|141=Y|10=065|
8=FIX.4.2|9=74|35=A|49=B|56=A|43=N|34=1|52=23:25:51.064|98=0|108=30|10=254|
8=FIX.4.2|9=86|35=1|49=B|56=A|43=N|34=2|52=23:25:51.065|112=03/03/2014-07:25:51|10=108|
8=FIX.4.2|9=75|35=A|34=1|49=A|52=23:25:50.076|56=B|98=0|108=30|141=Y|10=059|
8=FIX.4.2|9=74|35=A|49=B|56=A|43=N|34=1|52=23:26:03.064|98=0|108=30|10=252|
8=FIX.4.2|9=86|35=1|49=B|56=A|43=N|34=2|52=23:26:03.065|112=03/03/2014-07:26:03|10=104|
8=FIX.4.2|9=75|35=A|34=1|49=A|52=23:26:02.076|56=B|98=0|108=30|141=Y|10=057|
8=FIX.4.2|9=74|35=A|49=B|56=A|43=N|34=1|52=23:26:15.064|98=0|108=30|10=255|
8=FIX.4.2|9=86|35=1|49=B|56=A|43=N|34=2|52=23:26:15.065|112=03/03/2014-07:26:15|10=110|
8=FIX.4.2|9=75|35=A|34=1|49=A|52=23:26:14.076|56=B|98=0|108=30|141=Y|10=060|
8=FIX.4.2|9=74|35=A|49=B|56=A|43=N|34=1|52=23:26:27.064|98=0|108=30|10=002|
8=FIX.4.2|9=86|35=1|49=B|56=A|43=N|34=2|52=23:26:27.065|112=03/03/2014-07:26:27|10=116|
8=FIX.4.2|9=75|35=A|34=1|49=A|52=23:26:26.076|56=B|98=0|108=30|141=Y|10=063|
8=FIX.4.2|9=74|35=A|49=B|56=A|43=N|34=1|52=23:26:39.065|98=0|108=30|10=006|
请注意,它会继续尝试再次登录会话但失败。
同时,我确信该应用程序会不断收到来自对方的消息。证据是 FIX.4.2-AB.message.log 文件随着有效消息(不仅仅是心跳,还有其他有效消息)不断增长。这意味着连接不会丢失。
为什么我无法登录会话?
请帮忙
第三次更新:
我的登录成功日志如下:
8=FIX.4.2|9=75|35=A|34=1|49=A|52=23:00:07.095|56=B|98=0|108=30|141=Y|10=055|
8=FIX.4.2|9=74|35=A|49=B|56=A|43=N|34=1|52=23:00:20.221|98=0|108=30|10=238|
8=FIX.4.2|9=86|35=1|49=B|56=A|43=N|34=2|52=23:00:20.222|112=07:00:20|10=081|
8=FIX.4.2|9=81|35=0|34=2|49=A|52=23:00:07.301|56=B|112=07:00:20|10=091|
8=FIX.4.2|9=57|35=0|34=3|49=A|52=23:00:38.075|56=B|10=228|
8=FIX.4.2|9=63|35=0|49=B|56=A|43=N|34=26|52=23:00:51.260|10=00
第三行表示对方向我发送了一个 TEST 请求,我没有响应,这似乎没问题并且建立了连接。
我应该明确处理 TEST 请求的响应吗?看来 quickfix/j 会为我处理。