上下文QuickFix/N:如何在FIX5.0中使用FIXT1.1時輸入消息?
我有一個測試Acceptor和Initiator。我正在使用QuickFix/N 1.7版本。如果我將Acceptor和Initiator配置爲FIX 4.4,一切正常。 無所作爲,只需連接,然後將傳入/傳出心跳消息記錄到調試控制檯。一切OK,看下面。
我改變沒有只是兩個配置文件相應地從FIX 4.4到FIX 5.0。所有作品(我的意思是心跳消息仍然來來去去),但回調的消息參數不再是類型化(心跳)運行時實例消息,而是基類。
診斷:
- 所有引用的規範文件已經到位。如果我故意破壞TransportDataDictionary路徑或AppDataDictionary中的字符,我得到了預期的異常
- 使用開箱即用的規範文件,根本沒有定製。
問:
爲什麼消息實例是不是在FIX 5.0案例類型化運行實例的消息,並在FIX 4.4的情況下輸入? 這是預期的行爲還是我錯過了什麼?
代碼展品:
public void ToAdmin(Message message, SessionID sessionID)
{
Debug.WriteLine([email protected]"(A)OUT: {message.GetType()}{message}");
}
public void FromAdmin(Message message, SessionID sessionID)
{
Debug.WriteLine([email protected]"(A)IN: {message.GetType()}{message}");
}
當使用4.4的配置,然後我看到這一點::(消息類型是QuickFix.FIX44.Heartbeat
)
代碼
Logon - FIX.4.4:TEST01->MYACCEPTOR
(A)IN: QuickFix.FIX44.Heartbeat8=FIX.4.4 9=5335=034=249=MYACCEPTOR52=20170715-15:00:31.59656=TEST0110=179
(A) OUT: QuickFix.FIX44.Heartbeat8=FIX.4.4 9=5335=034=249=TEST0152=20170715-15:00:31.60456=MYACCEPTOR10=169
(A) OUT: QuickFix.FIX44.Heartbeat8=FIX.4.4 9=5335=034=349=TEST0152=20170715-15:00:36.61056=MYACCEPTOR10=172
(A) IN: QuickFix.FIX44.Heartbeat8=FIX.4.4 9=5335=034=349=MYACCEPTOR52=20170715-15:00:36.61556=TEST0110=177
當使用5.0和配置時,我看到這個:(消息類型只是QuickFix.FIX50.Message
)
Logon - FIXT.1.1:TEST01->MYACCEPTOR
(A)IN: QuickFix.Message8=FIXT.1.19=5335=034=249=MYACCEPTOR52=20170715-15:06:16.92256=TEST0110=003
(A) OUT: QuickFix.Message8=FIXT.1.19=5335=034=249=TEST0152=20170715-15:06:16.93056=MYACCEPTOR10=002
(A) OUT: QuickFix.Message8=FIXT.1.19=5335=034=349=TEST0152=20170715-15:06:21.93656=MYACCEPTOR10=005
(A) IN: QuickFix.Message8=FIXT.1.19=5335=034=349=MYACCEPTOR52=20170715-15:06:21.94156=TEST0110=001
爲Intiator FIX5.0配置:對於接受器
[DEFAULT]
ConnectionType=initiator
ReconnectInterval=2
FileStorePath=store
FileLogPath=log
StartTime=00:00:00
EndTime=00:00:00
UseDataDictionary=Y
TransportDataDictionary=..\spec\FIXT11.xml
AppDataDictionary=..\spec\FIX50.xml
SocketConnectHost=127.0.0.1
SocketConnectPort=1111
LogoutTimeout=5
ResetOnLogon=Y
ResetOnDisconnect=Y
[SESSION]
BeginString=FIXT.1.1
DefaultApplVerID=FIX.5.0
SenderCompID=TEST01
TargetCompID=MYACCEPTOR
HeartBtInt=5
FIX5.0配置:
[DEFAULT]
ConnectionType=acceptor
SocketAcceptPort=1111
StartTime=00:00:00
EndTime=00:00:00
FileLogPath=log
UseDataDictionary=Y
ResetOnLogon=Y
ResetOnLogout=Y
ResetOnDisconnect=Y
[SESSION]
BeginString=FIXT.1.1
DefaultApplVerID=FIX.5.0
SenderCompID=MYACCEPTOR
TargetCompID=TEST01
FileStorePath=store
TransportDataDictionary=..\spec\FIXT11.xml
AppDataDictionary=..\spec\FIX50.xml
你可以在兩個數據字典中發佈心跳消息的定義嗎? (4.4&5.0)? – neur0tic
使用與原始回購(適用於4.4和5.0)完全相同的定義:https://github.com/connamara/quickfixn/tree/master/spec/fix –