0

我有一个 FIX 应用程序,它接收 FIX MarketData 消息并将它们发送到内部应用程序。我禁用了 MarketData 日志记录,因为它会生成非常大的日志,但我们对商店也有同样的问题。当我查看堆转储时,我看到 TreeMap 不断地生长。TreeMap 很可能是 FileStore 中的那个。
在这种情况下人们会怎么做?
谢谢

4

1 回答 1

0
  1. 创建一个CustomFileStore实现MessageStore接口的类。使构造函数接受一个MessageStore对象并将其存储为成员。MessageStore将接口中的所有方法委托给MessageStore成员,方法除外set。在您的set方法过滤消息的实现中:如果它是 MarketData 消息,则什么也不做,否则调用setMessageStore成员。
  2. 创建一个CustomFileStoreFactory派生自的类FileStoreFactory,并覆盖该create方法。在 create 方法中,创建一个 CustomFileStore,将返回值传递给构造函数super.create(这将是一个FileStore对象)。
  3. 将 的实例传递CustomFileStoreFactory给您的SocketInitiator.

请注意,这是相当hacky,除非没有其他方法,否则我不会自己这样做(我自己从未这样做过)。如果MessageStore.get在 上调用CustomFileStore,可能会导致意外行为(异常或不正确的结果)。所以我建议不要这样做。

于 2015-04-20T17:37:12.797 回答