Я загружаю тестирование различных реализаций JMS для нашего сервиса уведомлений.Никто из ActiveMQ, HornetQ и OpenMQ не ведет себя так, как ожидалось (проблемы с надежностью и установлением приоритетов сообщений).Но, как и сейчас, у меня лучшие результаты с OpenMQ.Ожидайте две проблемы, которые, вероятно, просто неправильно настроены (я надеюсь).Один с хранилищем JDBC
Тестовый сценарий:
2 производителя с одной очередью отправляют сообщения с различным приоритетом.1 потребитель потребляет из очереди с постоянной скоростью, которая немного ниже, чем производят производители.OpenMQ работает автономно и использует PostgreSQL в качестве постоянного хранилища.Все сообщения отправляются и используются по маршруту Apache Camel, и все они постоянны.
Проблемы:
- После примерно 50000 сообщений я вижу предупреждения и ошибки в журнале OpenMQо нехватке памяти (cinfiguration по умолчанию с размером кучи 256Mb).Брокер выпускает продукцию, и через некоторое время брокер вообще прекращает ее отправку.Максимальное использование памяти JVM у брокера.
Как настроить брокера для достижения этой цели:
- Брокер не зависит от размера очереди (до 1 000 000 msgs) и при ограничении памяти.Производительность не проблема - только надежность.
Это возможно?