我正在使用curl作为二进制数据将200-900 MB的大型zip文件发送到骆驼。这对restlet很好,但是当我处理从restlet到Rabbitmq的数据时,内存使用率上升。
我尝试注释掉.to(rabbitmq ...),然后问题消失了。当我启用.to(rabbitmq ...)端点时,内存使用量上升。我试图禁用rabbitmq使用者,但并没有改变。
似乎问题是.to(rabbitmq ...)导致内存使用量增加。我发现它在内部使用了byte [],但转换为InputStream并没有做任何事情。 Rabbitmq内部使用byte [],但发送到队列完成后不会释放内存。
我尝试了流缓存并将主体转换为InputStream,但是问题仍然存在。
目前,我需要大量内存,有时必须为900MB Zip文件增加大约4GB的堆空间
.to(ExchangePattern.InOnly,"rabbitmq://localhost/myQueue?connectionFactory=#myConnectionFactory&durable=true&queue=myQueue&autoDelete=false&autoAck=false&queueArgsConfigurer=#myQueueArgs")
答案 0 :(得分:0)
使用对象存储(例如S3,FTP等)存储zip文件,并且仅通过RabbitMQ将URL传递给文件。
注意: RabbitMQ团队监视rabbitmq-users
mailing list,并且有时仅在StackOverflow上回答问题。