2015-01-12 2 views
0

FIX MarketData 메시지를 수신하여 내부 응용 프로그램에 보내는 FIX 응용 프로그램이 있습니다. 매우 큰 로그를 생성하기 때문에 MarketData 로깅을 사용하지 않도록 설정했으나 상점에 동일한 문제가 있습니다. 힙 덤프를 보면 TreeMap이 계속해서 그루브를 차지하는 것을 볼 수 있습니다. 아마도 TreeMap은 FileStore에있는 TreeMap 일 것입니다.
그런 경우 사람들은 무엇을합니까?
감사QuickFIX/J 저장 메시지 비활성화

+0

PersistMessages를 Y로 설정 했습니까? 그 TreeMap이 상태를 저장하고 있는지 궁금합니다. – user1717259

답변

0
  1. MessageStore 인터페이스를 구현하는 클래스 CustomFileStore를 만듭니다. 생성자를 MessageStore 개체로 만들고 멤버로 저장합니다. MessageStore 인터페이스의 모든 메소드를 메소드를 제외하고 MessageStore 멤버에게 위임하십시오. set 필터 메시지 구현시 : MarketData 메시지 일 경우 아무 작업도 수행하지 않고 MessageStore 멤버의 set으로 전화하십시오.
  2. FileStoreFactory에서 파생되는 CustomFileStoreFactory 클래스를 만들고 create 메서드를 재정의합니다. create 메서드에서 생성자를 전달하는 CustomFileStore를 super.create (FileStore 개체)의 반환 값으로 만듭니다.
  3. SocketInitiatorCustomFileStoreFactory의 인스턴스를 전달하십시오.

다른 방법이 없다면 (나 자신을 한 번도 해 본 적이 없다면) 이것은 다소 해킹 된 것입니다. MessageStore.getCustomFileStore에서 호출되면 예기치 않은 동작 (예외 또는 잘못된 결과)이 발생할 수 있습니다. 그래서 나는 이것을하는 것에 반대 할 것을 권고합니다.