我有一个 FIX 应用程序,它接收 FIX MarketData 消息并将它们发送到内部应用程序。我禁用了 MarketData 日志记录,因为它会生成非常大的日志,但我们对商店也有同样的问题。当我查看堆转储时,我看到 TreeMap 不断地生长。TreeMap 很可能是 FileStore 中的那个。
在这种情况下人们会怎么做?
谢谢
问问题
778 次
1 回答
0
- 创建一个
CustomFileStore
实现MessageStore
接口的类。使构造函数接受一个MessageStore
对象并将其存储为成员。MessageStore
将接口中的所有方法委托给MessageStore
成员,方法除外set
。在您的set
方法过滤消息的实现中:如果它是 MarketData 消息,则什么也不做,否则调用set
该MessageStore
成员。 - 创建一个
CustomFileStoreFactory
派生自的类FileStoreFactory
,并覆盖该create
方法。在 create 方法中,创建一个 CustomFileStore,将返回值传递给构造函数super.create
(这将是一个FileStore
对象)。 - 将 的实例传递
CustomFileStoreFactory
给您的SocketInitiator
.
请注意,这是相当hacky,除非没有其他方法,否则我不会自己这样做(我自己从未这样做过)。如果MessageStore.get
在 上调用CustomFileStore
,可能会导致意外行为(异常或不正确的结果)。所以我建议不要这样做。
于 2015-04-20T17:37:12.797 回答