gpt4 book ai didi

java - 在 Java 中寻找简单的持久消息缓冲区

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:48 24 4
gpt4 key购买 nike

我正在寻找一个简单的持久缓冲区作为 Java 应用程序中 JSON 消息的临时存储。内存使用量应该相对恒定,而不取决于缓冲区中的消息数量。如果能够重播过去某个时间点的消息,那就太好了。删除旧消息应该是有效的。需要能够处理 1m 消息/小时。

目前,我的应用程序使用本地 RabbitMQ 代理将消息铲到远程 RabbitMQ 代理。当远程代理关闭或不接受消息时,本地 RabbitMQ 代理的内存使用量随着队列长度的增加而增加,最终它停止接受消息。我想将其换成基于本地磁盘的缓冲区和一个将消息复制到远程 RabbitMQ 代理的线程。

有人有什么想法吗?我看过 Kafka,但它对我的用例来说似乎有点矫枉过正。 MongoDB 是一种可能性,但我担心它的内存使用情况。

最佳答案

内存使用在任何系统中始终是一个问题。我正在使用 MongoDB 进行生产,当我与类似的解决方案(CouchDB、CouchBase、redis.io)进行比较时,MongoDB 在内存管理和易于实现方面确实非常出色。但我应该承认,我从来没有机会更详细地测试 Riak。

我正在存储 5.000.000 条用户记录,其中包含 4 个索引字段和所有用户 session ,这些记录都在使用消息服务的 rest/web 服务 api 后面。

我的消息服务使用同一台服务器上的另一个数据库实例。我的用户记录至少有 20 个字段, session 记录只有 5 个字段。我的 ubuntu 服务器从未使用超过 10 GB 的内存,即使是在重载过程中也是如此。

希望这有助于弄清楚。

ps:一切都取决于数据模型以及您如何实现基础架构。

问候,

编辑:

我认为this是关于使用 MongoDB 进行消息传递的精彩幻灯片。

还有一个不错的article关于 MongoDB 和消息传递。

您可以使用测试代码并查看结果是否适合您的解决方案。如果您进行测试,请不要忘记分享您的结果。

关于java - 在 Java 中寻找简单的持久消息缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11935727/

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