我正在实现一个使用大量小(<5KB)json消息的Spring Boot Java应用程序。我目前在我们的部署环境中遇到以下问题。
“ rabbitmq-nio” java.lang.OutOfMemoryError:Java堆空间
我们正在使用手动确认,但尚未确认任何消息。我们现在将预取设置设置为25。 JVM当前设置为最大2GB,对于这些消息的大小来说应该足够了(25x15x5 = 1875KB)。我怀疑我们的使用者的编写方式会发生某种内存泄漏。有谁知道为什么会发生这种情况?
我将预取值限制为25 我尝试将JVM内存增加到2GB
在Spring应用程序启动时,我们正在将此接收器方法调用15个队列。
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堆空间