我从帖子中了解了 Chronicle-Queue: 实现基于文件的队列
这是我的用例:
- 我有一个服务于 http 请求的网络服务器(比如 tomcat)
- 每个请求处理可能会生成一些跟踪信息。
- 我会将这些跟踪信息写入 Chronicle-Queue(以字节 [] 为单位,我将自己进行编组/解组,例如使用 protobuf)
- 我将有一个专用线程来使用 tailer 从 Chronicle-Queue 中读取。每条消息将只处理一次,如果失败,我将有自己的重试策略将其放回队列以允许下一次尝试。
基于上述用例,我有以下问题:
应该使用多少个附加程序?多个线程共享 1 个附加程序或每个线程都有自己的附加程序?
queue.acquireAppender() 是一个繁重的操作吗?我应该缓存appender以避免调用acquireAppender()吗?
如果由于某种原因服务器关闭,tailer 是否可以记住最后一个成功读取条目并继续下一个条目?(就像磨石功能)
如何清除/删除旧文件?有什么 API 可以进行清除吗?
还有一个无关紧要的问题:
是否可以使用 Chronicle-Queue 来实现基于文件的 BlockingQueue?
谢谢
莱昂