У меня есть служба Java, которая считывает данные (включая BLOB) из таблицы «A», записывает эти данные в таблицу «B» и загружает BLOB на сервер хранения в виде ByteArrayInputStream (в основном, это небольшая служба миграции).После успешного завершения процесса загрузки в обеих таблицах для логического столбца устанавливается значение 1.Служба работает таким образом, что запрос POST отправляется на сервер REST, и для каждой скопированной строки в качестве ответа возвращается заголовок местоположения.Метод ресурсов, обрабатывающий POST-запрос, выглядит следующим образом.
@POST
@Produces({MediaType.APPLICATION_JSON})
public Response migrateToMinio(@Context UriInfo uriInfo) throws Exception {
tiedostoService = new TiedostoService();
attachmentService = new AttachmentService();
List<Tiedosto> tiedostoList = tiedostoService.getAllFiles();
List<String> responseList = new ArrayList<>();
Response r;
Integer newRow;
String responseData = null;
int i=1;
for (Tiedosto tiedosto : tiedostoList) {
Attachment attachment = new Attachment();
attachment.setCustomerId(tiedosto.getCustomerId());
attachment.setSize(tiedosto.getFileSize());
newRow = attachmentService.createNew(attachment);
UriBuilder builder = uriInfo.getAbsolutePathBuilder();
if (newRow == 1) {
builder.path(Integer.toString(i));
r = Response.created(builder.build()).build();
responseData = r.getLocation().toString();
i++;
}
responseList.add(responseData);
}
String jsonString = new Gson().toJson(responseList);
return Response.status(Response.Status.OK).entity(jsonString).build();
}
Сначала JWT генерируется через POST для API и, используя его в качестве токена-носителя, другой POST отправляется в "/ rest / attachments", этовозвращает статус 200 после некоторого времени обработки, например:
![enter image description here](https://i.stack.imgur.com/ykPy8.png)
У меня вопрос, как я могу реализовать фоновую службу Java (как клиенткоторый будет работать на том же физическом компьютере, что и сервер), который будет автоматически отправлять запросы POST серверу REST для процесса миграции?При первом запуске фоновая служба должна обрабатывать всю таблицу, а после этого фоновая служба должна периодически запускаться, чтобы проверить, были ли добавлены новые строки в таблицу, и обработать их соответствующим образом.Я нуб из Java и буду очень признателен за любую помощь / предложения.