Reactor RabbitMQ Потребитель "rabbitmq-nio" java.lang.OutOfMemoryError: пространство кучи Java - PullRequest
0 голосов
/ 08 февраля 2019

Я реализую 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

...