#spring #rest #spring-webclient
#spring #rest #spring-webclient
Вопрос:
У меня есть объект с некоторыми атрибутами и очень большой список другого объекта. это выглядит так:
public class Company {
private String attr1;
private String attr2;
private long attr3;
private List<Employee> employees; // very large
...
}
public class Employee {
private long id;
private String name;
.....
}
Я хочу отправить объектную компанию (со списком из более чем 500 000 сотрудников) в запросе Rest от микросервиса к другому (для сохранения в его базе данных), используя веб-клиент Spring. Каков наиболее оптимальный способ сделать это без риска сбоя сервера?
Спасибо
Ответ №1:
Прежде всего, я хотел бы спросить, будет ли это повторяющимся сценарием, или это больше похоже на ситуацию начального импорта.
Если это случай начальной настройки, я выберу подход, основанный на spring batch, поскольку этот проект предназначен для больших нагрузок, подобных этому случаю.
Если это повторяющийся сценарий, я бы не рекомендовал пробовать запрос с 500 тыс. записей. Я буду нарушать несколько шаблонов.
Я рекомендую рассмотреть пакетный подход.
Комментарии:
1. Я также хотел бы использовать пакетный подход, но я не знаю, можно ли использовать его с моей структурой данных. Я имею в виду, я знаю, как это работает, если бы у меня был только список объектов, но теперь, когда у меня есть один объект, содержащий список, это немного сложно
2. Ключевым фактором будет то, где хранятся данные: это база данных или большой файл? Или это что-то еще?
3. данные будут сохранены в базе данных
4. Я имею в виду, где хранятся исходные данные? 500 тыс. сотрудников, которых вам нужно обработать. Если вам нужно переместить их из исходной базы данных в базу данных назначения, вы можете реализовать пакетное задание, которое считывает данные из источника порциями, а затем записывает в базу данных назначения.
5. у вас есть конкретный пример его реализации?