2012-02-17 4 views
1

MarketDataSnapshotFullRefresh를 클라이언트 응용 프로그램에 보내고 있지만 toAdmin 메소드에서 "Tag가 두 번 이상 표시됩니다."라는 메시지가 나타납니다. 내가 얻는 원시 메시지 문자열은태그가 두 번 이상 나타납니다. 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()라고 했니? 그러나 QF가 보내는 메시지의 유효성을 검사하지 않기 때문에 실제로 toApp()도 될 수 없습니다. –

+0

나는이 시나리오가 실제로 이것이라고 생각한다. * 서버가이 MDSnapshot 메시지를 작성하고 클라이언트에게 전송 중이다. 클라이언트는 구문 분석을 시도하고 'fromApp()'('toAdmin' 또는'toApp'이 아님) 중에 throw합니다. * –

답변

2

귀하의 문제는 데이터 사전에있다 - 당신의 FIX42.xml 파일 MarketDataSnapshotFullRefresh에 대한 정확한 정의가 있어야 group.Also이 설정 파일은 "UseDataDictionary = Y이 있는지 확인 반복 MDEntries에 대해 정의 된 구성 요소 블록 사용자 정의 FIX42.xml에 대한 경로가 정의되어 있는지 확인하십시오.

.xml 파일에 정의 된 필드의 순서가 상대방의 사양과 다를 수도 있습니다. 그것들도 같은 순서인지 확인하십시오.

3

이것은 반복되는 그룹 문제인 것처럼 보입니다. 귀하의 고객은 Snapshot 메시지를 평범한 no-groups 메시지로 취급 한 다음 반복되는 태그로 인해이를 거부합니다.

클라이언트가 그룹을 인식하지 못하면 일반적으로 DataDictionary가 잘못 구성되었음을 의미합니다.

다음은 구성에 설정되어 있는지 확인합니다, 나는이 특정 문제가 사라질 것이라고 생각 :

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

명확성을 위해 표현되었습니다. –

관련 문제