2013-10-29 6 views
3

웹 기반 교환을 실행 중이며 새로운 고객이 가입한다고 가정합니다. 나는 그 고객에게 새로운 CompID를주고, 이제는 그 CompID를 수락 자에 추가하려고한다. 수락자를 다시 시작해야합니까, 아니면 수락자를 동적으로 다시 시작할 수 있습니까?quickfixj의 SenderCompID 및 TargetCompID에 대해 어떻게 동적으로 동의합니까?

미리 CompID에 동의하고 어딘가에 구성에 고정해야하는 것은 확장 성이없는 것처럼 보입니다.

필자는 some examples을 보았습니다. 그러나 이들은 단순히 구성을 변경하여 보낸 사람/대상 CompID를 거의 무시하고이를 *으로 설정하는 것으로 보입니다. 다른 방법으로 할 수 있습니까?

답변

2

TargetCompID을 수정하고 각 사용자마다 고유 한 SenderCompID을 보내고 싶습니다. 그런 다음 수락 자 구성에서 SenderCompID*으로 설정합니다. 이렇게하면 모든 SenderCompID을 수락 할 수 있습니다. 그러나 사용자의 데이터베이스에 대해 각 주문을 확인하려면 코드 어딘가에 있어야합니다. 사용자 (SenderCompID)가 유효하지 않으면 거부 메시지를 보냅니다. 많은 구현에서는 원치 않는 연결이 들어오지 않도록 터널과 허용 된 IP 주소도 사용합니다.

+0

quickfixj의 예제에서 Executor의 수락자는'SenerCompID'가'EXEC'이고'TargetCompID'가'BANZAI' 인 설정을 취합니다. 필자는 이것이 수용자의'SenderCompID'를'*'로 설정하면 수용자에서 오는 메시지가 발신자와 식별되지 않는다는 것을 의미한다고 추론합니다. 내가 본 모든 예제는 'SenderCompID'가 현재 보낸 사람의 ID임을 나타냅니다 (이 경우 Acceptor이면 Exchange의 CompID입니다). – Kiril

+0

나는 당신의 의견을 전혀 따르지 않는다. – robthewolf

3

Executor 예제에서 DynamicAcceptorSessionProvider을 어떻게 사용하는지 살펴보십시오. Executor 예제는 설정 파일에서 "templates"세션을 읽고이를 수신자 엔드 포인트 IP 주소와 연관시킵니다. 억 셉터 템플릿은 "AcceptorTemplate = true"설정에 의해 식별됩니다. FIX 버전을 포함한 모든 세션 ID 필드는 SenderCompID뿐 아니라 와일드 카드로 지정할 수 있습니다.

세션 템플릿이 정의되는 방법의 예는 executor_dynamic.cfg를 참조하십시오. 이 구성에서 SenderCompID 및 TargetCompID는 모두 와일드 카드로 처리되고 다양한 FIX 버전의 템플릿이 정의됩니다 (적절한 데이터 사전 파일을 지정하기 위해).

알 수없는 세션 ID에 대한 메시지가 도착하면 DynamicAcceptorSessionProvider은 세션 ID를 템플릿의 와일드 카드 세션 ID와 일치 시키려고 시도합니다. 일치하는 항목을 찾으면 새 세션이 자동으로 생성되어 설정에서 명시 적으로 정의 된 것처럼 수락 자에 추가됩니다. 새 세션에는 수락 자 세션 템플릿에 정의 된 설정이 있습니다.

DynamicAcceptorSessionProvider은 설정 파일을 사용하여 동적 세션 생성을 지원하는 AcceptorSessionProvider 구현입니다. 그러나 데이터베이스 정보를 기반으로 세션을 동적으로 생성 할 수있는 사용자 정의 AcceptorSessionProvider을 구현할 수도 있습니다.