Сокращение использования памяти при использовании rabbitmq в Apache Camel для больших файлов / сообщений - PullRequest
1 голос
/ 09 мая 2019

Я отправляю верблюду большие почтовые файлы размером 200-900 МБ, используя curl в качестве двоичных данных.Это нормально для рестлета, но когда я обрабатываю данные из рестлета в rabbitmq, использование памяти увеличивается.

Я попытался закомментировать .to (rabbitmq ...), и тогда проблема исчезла.Когда я включаю конечную точку .to (rabbitmq ...), использование памяти увеличивается.Я пытался отключить потребителя rabbitmq, и это ничего не изменило.

Кажется, проблема в .to (rabbitmq ...), который приводит к увеличению использования памяти.Я обнаружил, что он внутренне использует byte [], но преобразование в InputStream ничего не сделало.Rabbitmq внутренне использует byte [], но после завершения отправки в очередь он не освобождает память.

Я попытался выполнить потоковое кеширование, а также преобразовать тело в InputStream, но проблема сохраняется.

На данный момент мне нуженмного памяти и иногда приходится увеличивать верхнюю область кучи примерно до 4 ГБ для 900 МБ Zip-файла

.to(ExchangePattern.InOnly,"rabbitmq://localhost/myQueue?connectionFactory=#myConnectionFactory&durable=true&queue=myQueue&autoDelete=false&autoAck=false&queueArgsConfigurer=#myQueueArgs")

1 Ответ

0 голосов
/ 13 мая 2019

Сохраняйте zip-файлы, используя хранилище объектов, например S3, FTP и т. Д., И передавайте только URL-адреса к файлам через RabbitMQ.


ПРИМЕЧАНИЕ: команда RabbitMQ отслеживает список рассылки rabbitmq-users и только иногда отвечает на вопросы в StackOverflow.

...