Отправить объект с большим списком с помощью веб-клиента Spring

#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. у вас есть конкретный пример его реализации?