使用历史记录队列作为基于文件的 FIFO 队列



我从帖子中了解了Chronicle-Queue: 实现基于文件的队列

这是我的用例:

  • 我有一个Web服务器(比如tomcat(,它为http请求提供服务
  • 每个请求处理可能会生成一些跟踪信息。
  • 我会将这些跟踪信息写入编年史队列(以字节[]为单位,我将自己进行编组/解组,就像使用 protobuf 一样(
  • 我将有一个专用线程来使用尾随器从编年史队列中读取。每条消息将只处理一次,如果失败,我将有自己的重试策略将其放回队列以允许下一次尝试。

基于上述用例,我有以下问题:

  1. 应该使用多少个附加器?多个线程共享 1 个追加器,还是每个线程都有自己的追加器?

  2. queue.acquireAppender(( 是一个繁重的操作吗?我应该缓存追加器以避免调用获取追加器((吗?

  3. 如果由于某种原因服务器关闭,tailer 能否记住上一个成功读取条目并继续下一个条目?(如磨石特征(

  4. 如何清除/删除旧文件?是否有任何 API 可以执行清除?

还有一个不相关的问题:

是否可以使用Chronicle-Queue来实现基于文件的BlockingQueue?

谢谢

里昂

应该使用多少个附加器?多个线程共享 1 个追加器,还是每个线程都有自己的追加器?

我建议你使用queue.acquireAppender((,它会根据需要创建Appenders。

queue.acquireAppender(( 是一个繁重的操作吗?我应该缓存追加器以避免调用获取追加器((吗?

它不是免费的,但花费~100纳秒。

如果由于某种原因服务器关闭,tailer 能否记住上一个成功读取条目并继续下一个条目?(如磨石特征(

我们建议将处理第一个队列的结果记录到另一个队列。在这里,您可以记录它所达到的索引。 这是我们正在考虑的功能,无需添加队列。

如何清除/删除旧文件?是否有任何 API 可以执行清除?

如果您在构建器上设置了StoreFileListener,则可以在不再需要文件时收到通知。

最新更新