有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在Java中寻找简单持久消息缓冲区的消息传递

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

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

有人有什么想法吗?我已经看过卡夫卡了,但对于我的用例来说,这似乎是矫枉过正。MongoDB是可能的,但我担心它的内存使用


共 (1) 个答案

  1. # 1 楼答案

    内存使用在任何系统中都是一个问题。我在生产中使用MongoDB,与类似的解决方案(CouchDB、CouchBase、redis.io)相比,MongoDB在内存管理和易于实现方面都非常好。但我得承认,我从来没有机会对里亚克进行更详细的测试

    我正在一个rest/web服务api后面存储5.000.000条用户记录,其中包含4个索引字段和所有用户会话,该api使用一个消息传递服务

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

    希望这有助于解决问题

    ps:所有这些都取决于数据模型和如何实现基础设施

    问候

    编辑:

    我认为this是一个关于使用MongoDB进行消息传递的好幻灯片

    还有关于MongoDB和消息传递的精彩介绍

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