Reactor RabbitMQ Потребитель "rabbitmq-nio" java.lang.OutOfMemoryError: пространство кучи Java
Я реализую Java-приложение с весенней загрузкой, которое потребляет много маленьких (<5 КБ) json-сообщений. В настоящее время я сталкиваюсь со следующей проблемой в нашей развернутой среде.
"rabbitmq-nio" java.lang.OutOfMemoryError: пространство кучи Java
Мы используем подтверждение вручную и еще не подтверждаем никаких сообщений. Мы установили предварительную настройку на 25 на данный момент. В настоящее время для JVM установлено значение 2 ГБ, что должно быть достаточно для размера этих сообщений (25x15x5 = 1875 КБ). Я подозреваю, что какая-то утечка памяти связана с тем, как пишется наш потребитель. У кого-нибудь есть советы, почему это может происходить?
Я ограничил значение предварительной выборки до 25. Я попытался увеличить объем памяти JVM до 2 ГБ.
Мы вызываем этот метод получателя для 15 очередей при запуске приложения Spring.
public Flux<Message> consume(String queue, boolean ack, ConsumeOptions consumeOptions) {
return sender
.declareQueue(Config.setupQueueSpecification(queue))
.thenMany(receiver.consumeManualAck(queue, consumeOptions))
.doOnNext(ad -> {
if (ack) {
ad.ack();
}
})
.map(ad -> Message.fromBytes(ad.getBody()));
}
Я ожидаю, что получатель будет использовать все 15 очередей без "rabbitmq-nio" java.lang.OutOfMemoryError: пространство кучи Java