2012-02-17 112 views
1

我正在向客戶端應用程序發送消息MarketDataSnapshotFullRefresh,但在toAdmin方法中出現「標記出現多次」。我得到的原始消息字符串是標記出現多次QuickFix

8=FIX.4.2|9=111|35=3|34=222|49=CLIENT1|52=20120217-18:57:44.233|56 
=FixServer|45=189|58=Tag appears more than once|371=37|372=W|10=234| 

有沒有人有想法?

QuickFix42.MarketDataSnapshotFullRefresh message = 
     new QuickFix42.MarketDataSnapshotFullRefresh(new Symbol("QF")); 

    QuickFix42.MarketDataSnapshotFullRefresh.NoMDEntries group = 
      new QuickFix42.MarketDataSnapshotFullRefresh.NoMDEntries(); 

     group.set(new MDEntryType('0')); 
     group.set(new MDEntryPx(12.32)); 
     group.set(new MDEntrySize(100)); 
     group.set(new OrderID("ORDERID")); 
     message.addGroup(group); 

     group.set(new MDEntryType('1')); 
     group.set(new MDEntryPx(12.32)); 
     group.set(new MDEntrySize(100)); 
     group.set(new OrderID("ORDERID")); 
     message.addGroup(group); 

     Session.sendToTarget(message, session); 
+0

你的問題有一定的錯誤,我想。由於MDSnapshot不是管理員消息,因此在toAdmin()期間拋出此錯誤時您必須錯誤。你的意思是toApp()?但實際上,它也不能用於App(),因爲QF不驗證傳出消息。 – 2012-10-11 20:36:23

+0

我認爲你的場景實際上是這樣的:*服務器正在構造這個MDSnapshot消息併發送給客戶端。客戶端嘗試解析並在'fromApp()'(而不是'toAdmin'或'toApp')期間拋出* – 2012-10-11 20:38:12

回答

2

你的問題就出在你的數據字典 - 你FIX42.xml文件應該有MarketDataSnapshotFullRefresh正確的定義,爲MDEntries重複group.Also確保您的配置文件中有「UseDataDictionary = Y定義的組件塊「並定義了定製FIX42.xml的路徑。

您的.xml文件中定義的字段順序與您的對手方的規格不一致也是可能的。確保它們的順序一樣。

3

這看起來像是一個重複組問題。您的客戶將Snapshot消息視爲平面無組消息,然後由於重複的標籤而拒絕。 (您的消息構建代碼顯示正確。)

當客戶端無法識別組時,那通常意味着DataDictionary配置錯誤。

確保以下是在您的配置設置,並且我懷疑,這個特定的問題就會迎刃而解:

UseDataDictionary=Y 
DataDictionary=path/to/your/DD.xml 
+0

爲了清晰起見,重寫。 – 2012-10-12 14:15:19