2014-07-04 95 views
0

我需要禁用quickfix驗證。如何禁用quickfix驗證

設置UseDataDictionary = N不起作用。 刪除配置文件中字典文件的路徑不起作用。 將目錄中的xml文件重命名爲其他擴展名不起作用。

仍然拒絕基於驗證失敗的消息。

該目錄是正確的。請幫忙!我相信我錯過了一些微不足道的東西。

謝謝!

PS - 在回答一些問題: 我得到的錯誤是:指定了需要的秩序58 =標籤371 = 143 372 = 8

事實上,客戶端在郵件正文發送標籤143 ,而不是標題。客戶端不會更改代碼。我嘗試將標籤143添加到ExecutionReport正文,但這沒有幫助。我很厭煩爲這些傢伙把標籤143拿出頭來。

PS - 配置文件:

[DEFAULT] 
ConnectionType=initiator 
ReconnectInterval=60 
FileStorePath=store 
FileLogPath=log 
StartTime=00:00:00 
EndTime=00:00:00 
UseDataDictionary=N 
DataDictionary=/xxxxxx 
TransportDataDictionary=/xxxxx 
ResetOnLogon=N 
DefaultApplVerID=9 

[SESSION] 
BeginString=FIX.4.4 
SenderCompID=xxxxxx 
TargetCompID=xxxxxx 
SocketConnectHost=xxxxxxxxx 
SocketConnectPort=52400 
HeartBtInt=30 
+0

您能否顯示並請輸入錯誤 – robthewolf

+0

'幾個標準文件包含在spec目錄中。您是否檢查過這個位置?您是否嘗試調試以查看它嘗試讀取的所有路徑? – DumbCoder

+0

請分享示例配置參數並拒絕FIX消息,我可以幫忙。 – cengizkrbck

回答

0

你必須有UseDataDictionary = Y,如果您有重複的組,它講述的QuickFix如何處理重複組項目。 「指定的標籤超出了所需的順序371 = 143 372 = 8」通常意味着標頭標籤位於消息正文中,正文標籤位於標頭中,重複組標籤位於正文中,正文標籤位於一個重複的組等。由於客戶端在郵件正文中發送標籤143而不是標頭,因此您需要編輯DataDictionary,以便該標籤出現在郵件正文中而不是標頭中。既然你可以在每個連接的基礎上設置DataDictionary,我會強烈建議你創建一個原始字典的副本,給它一個客戶端特定的名稱並編輯該文件,然後將其連接到該連接,保持原來的清潔。

+0

MD-Tech,謝謝。將143添加到身體是不夠的,我不得不先把它從頭上取出。現在沒有更多的拒絕。但是,現在修復引擎不會打印,也不會將消息傳播到應用程序級別......我想知道是否還有其他錯誤,但沒有輸出。當FIX引擎拒絕它時,它將打印它發送給客戶端的拒絕郵件,而不是實際的郵件本身。現在,將143從標題移動到正文時,日誌中沒有ExecutionReport消息且沒有拒絕。應用程序中的第一行代碼不會被觸發... – elanamig

+0

對不起,我說的是當你說「而不是」時,你把它從標題中取出。什麼是您希望觸發的「應用程序中的第一行代碼」?這是一個OnMessage呼叫嗎?如果是這樣的話? –

1

您可以通過在配置文件中將ValidateFieldsOutOfOrder參數設置爲N來禁用此特定檢查。見Configuring QuickFIX