Dav*_*ker 7 java messaging rabbitmq
我正在寻找一个简单的持久缓冲区作为Java应用程序中JSON消息的临时存储.内存使用量应相对恒定,不依赖于缓冲区中的消息数.能够从过去的某个点重播消息会很高兴.删除旧邮件应该是有效的.需要能够处理1m消息/小时.
目前,我的应用程序使用本地RabbitMQ代理,该代理将消息发送到远程RabbitMQ代理.当远程代理关闭或不接受消息时,本地RabbitMQ代理的内存使用量随队列长度而增加,并最终停止接受消息.我想将此交换为基于本地磁盘的缓冲区和将消息复制到远程RabbitMQ代理的线程.
有人有主意吗?我看过Kafka,但对我的用例来说似乎有点过分了.MongoDB是可能的,但我担心它的内存使用情况.
内存使用在任何系统中始终是一个问题。我在生产中使用 MongoDB,当我与类似的解决方案(CouchDB、CouchBase、redis.io)进行比较时,MongoDB 在内存管理和易于实施方面确实很好。但我应该承认,我从来没有机会更详细地测试 Riak。
我正在使用 4 个索引字段存储 5.000.000 条用户记录,并且所有用户会话都位于使用消息服务的 Rest/Web 服务 API 后面。
我的消息传递服务使用同一服务器上的另一个数据库实例。我的用户记录至少有 20 个字段,而会话记录只有 5 个字段。我的 ubuntu 服务器从未使用超过 10 GB 的内存,即使是在负载很重的情况下也是如此。
希望这有助于弄清楚。
ps:一切都取决于数据模型以及您如何实现基础设施。
问候,
编辑:
我认为这是一个关于使用 MongoDB 进行消息传递的很好的幻灯片。
还有一篇关于 MongoDB 和消息传递的好文章。
您可以使用测试代码并查看结果是否适合您的解决方案。如果您进行测试,请不要忘记分享您的结果。