Я использую ActiveMQ и у меня есть вопрос о том, как и когда сохраненные сообщения действительно переносятся на диск в ожидании потребителя?
Я использую виртуальные темы и создайте очереди потребителей, чтобы получать от них сообщения.Все сообщения сохранены (я проверил, что записи для всех неиспользованных сообщений действительно присутствуют в постоянном хранилище)
У меня есть несколько потребителей, которые регулярно подключаются и отключаются.Подключив jconsole к activemq, я заметил, что ВСЕ неиспользуемые сообщения , похоже, содержатся в памяти брокера.Они не меняются местами на диск, по крайней мере, я не смог это проверить.Установка memoryUsage
или включение producerFlowControl
- не имеет никакого эффекта.Брокер блокируется, если лимит memoryUsage достигнут при включенном управлении потоком, или MemoryPercentUsage продолжает увеличиваться, если управление потоком отключено.
Когда именно activemq освобождает память путем сохранения сообщений на диске / в постоянном хранилище?Или это так?Как я могу убедиться, что дисковое пространство, а не оперативная память, ограничит посредника в долгосрочной перспективе, когда в очереди будут миллионы неиспользованных (ожидающих) сообщений?