其中一个EventHandler
(DatabaseConsumer)Disruptor
调用数据库中的存储过程,它太慢以至于阻塞了Disruptor
一段时间。
因为我需要Disruptor
继续运行而不会阻塞。我正在考虑添加一个额外的队列,以便EventHandler
可以用作Producer
另一个新创建的线程可以用作Consumer
处理数据库的工作,这可以是异步的而不影响Disruptor
这是一些约束:
Disruptor
传递给 的对象EventHandler
大约是 30KB,这个对象的数量大约是 400k。理论上,需要处理的对象的总大小在 30KBX400K =12GB 左右。所以额外的队列对他们来说应该足够了。- 由于性能很重要,应该避免 GC 暂停。
- Java 程序的堆大小只有 2GB。
我正在考虑将文本文件作为一种选择。EventHandler
(生产者)将对象写入文件并Consumer
从中读取并调用存储过程。问题是如何处理它到达文件末尾的情况以及如何知道新的行。
有谁以前解决过这种情况?有什么建议吗?