2014-11-03 94 views
0

如果生产者正在发送大消息大小的消息(比方说120 MB)。 kahadb和levelDB如何处理这些消息。大消息大小的ActiveMQ持久性存储

kahadb:我的理解是日志大小默认为32 MB。如果我发送超过32MB的消息,它将如何处理这样的消息?我是否需要根据邮件大小将此大小更改为适当的值?

leveldb:默认情况下100mB是默认大小来存储消息数据。发生了哪一次滚动。 IF消息超过100mB。它如何处理?

谢谢,
ANuj

回答

0

对于Kahadb我们有消息,消息的滚动的日志,并且如果长度超过消息日志的则创建新的文件的大小的命令被存储在固定长度的数据文件。 KahaDB只是将新消息附加到现有日志并照顾创建新日志。

此外,KahaDB以BTree的形式保存索引。这些Btree索引持有对由其消息ID索引的数据日志中消息的引用。简而言之,KahaDB将借助此索引准确知道消息的存储位置。所以,添加任何新的配置存储在此消息不应该要求

关于在单个数据日志文件中的全部信息,我不知道可能是位研究需要 和改变journalSizeLength为KahaDB尝试你的运气之前请通过这 link(阅读评论可能有帮助)

祝你好运!

希望它有帮助。

+0

当我测试时,我发现它不会为相同的消息滚动日志。相反,它保持大小灵活,如果我发送一个200MB的消息,kahadb将创建200MB的日志。所以它看起来像kahadb必须保持一个消息在同一个文件,即使它跨越日志大小的限制。我看到了levelDB的相同行为。如果我对此有错,请纠正我。 – 2014-11-04 07:20:12

+0

编辑我的答案 – Vihar 2014-11-04 17:16:41