Hi, I'm trying to understand how ActiveMQ's broker manages persistent messages internally, and I have some questions that I'd like to discuss.
Persistent messages are stored in the Message Store, such as KahaDB. The KahaDB architecture comprises several elements: datalogs, cache, BTree indexes, etc. In addition to the Message Store, ActiveMQ has another element where messages are also stored: Message Cursors. My main question is whether the Message Store and the Message Cursors are somehow interconnected or if they are independent elements within the broker. For instance, the Message Store has a cache to store messages in memory, but the Message Cursor also stores messages in memory (in the Pending Cursor). Therefore, I'm curious if the Message Store's cache is the same as the Pending Cursor. In other words, would the same message be stored twice in memory (once in the cache and once in the pending cursor)? I would greatly appreciate any assistance in clarifying these doubts. Thank you in advance.