gpt4 book ai didi

溢出到磁盘的 Java FIFO 队列

转载 作者:搜寻专家 更新时间:2023-11-01 03:43:32 25 4
gpt4 key购买 nike

我正在工作/准备一个基于生产者/消费者模型的应用程序。在我的例子中,将有一个生成数个百万(非平凡)任务的生产者,并且将有一个可配置数量的消费者。

生产者和消费者之间的通信基本上是基于队列的。然而,我担心内存消耗:很可能任务的数量将超过 JVM 的可用内存。所以我想要一个 Queue 实现,它只在内存中保留“top-X”数量的队列项,并将其余的存储在磁盘上。这不必具有弹性,因为它不需要在程序重启后继续存在。

我四处搜索,但找不到似乎被广泛使用的 Queue 实现(似乎确实有一些,我称之为概念验证实现,但我担心这些实现的 future 支持/持续发展)。我还查看了外部消息队列应用程序,但是 (1) 我不想运行第二个外部进程,并且 (2) 甚至在同一个 JVM 进程中嵌入消息代理对于这个要求来说似乎有点“头重脚轻” .

有没有人知道任何提供此功能且得到良好支持的面向 future 的库?

Rgds

最佳答案

好吧,JMS 似乎是显而易见的解决方案。我认为您不会找到可靠的方法来解决这个问题,因为 JMS 解决了它并且是一个标准解决方案。

但是请注意,Java 也有 BoundedQueues 来解决这个问题:确定队列尺寸以确保当队列已满时它不会因 OOME 而失败,并且生产者在尝试将消息放入完整边界时将被阻塞排队,直到某个任务被其中一个消费者从队列中删除。

关于溢出到磁盘的 Java FIFO 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8692981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com