Я реализую Java-приложение с весенней загрузкой, которое потребляет много маленьких (<5 КБ) json-сообщений.В настоящее время я сталкиваюсь со следующей проблемой в нашей развернутой среде. </p>
"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