我从帖子中了解了Chronicle-Queue: 实现基于文件的队列
这是我的用例:
- 我有一个Web服务器(比如tomcat(,它为http请求提供服务
- 每个请求处理可能会生成一些跟踪信息。
- 我会将这些跟踪信息写入编年史队列(以字节[]为单位,我将自己进行编组/解组,就像使用 protobuf 一样(
- 我将有一个专用线程来使用尾随器从编年史队列中读取。每条消息将只处理一次,如果失败,我将有自己的重试策略将其放回队列以允许下一次尝试。
基于上述用例,我有以下问题:
-
应该使用多少个附加器?多个线程共享 1 个追加器,还是每个线程都有自己的追加器?
-
queue.acquireAppender(( 是一个繁重的操作吗?我应该缓存追加器以避免调用获取追加器((吗?
-
如果由于某种原因服务器关闭,tailer 能否记住上一个成功读取条目并继续下一个条目?(如磨石特征(
-
如何清除/删除旧文件?是否有任何 API 可以执行清除?
还有一个不相关的问题:
是否可以使用Chronicle-Queue来实现基于文件的BlockingQueue?
谢谢
里昂
应该使用多少个附加器?多个线程共享 1 个追加器,还是每个线程都有自己的追加器?
我建议你使用queue.acquireAppender((,它会根据需要创建Appenders。
queue.acquireAppender(( 是一个繁重的操作吗?我应该缓存追加器以避免调用获取追加器((吗?
它不是免费的,但花费~100纳秒。
如果由于某种原因服务器关闭,tailer 能否记住上一个成功读取条目并继续下一个条目?(如磨石特征(
我们建议将处理第一个队列的结果记录到另一个队列。在这里,您可以记录它所达到的索引。 这是我们正在考虑的功能,无需添加队列。
如何清除/删除旧文件?是否有任何 API 可以执行清除?
如果您在构建器上设置了StoreFileListener
,则可以在不再需要文件时收到通知。