jax-rs как я могу реализовать слушатель webhook на REST-сервере? - PullRequest
0 голосов
/ 10 октября 2018

Я работаю над проектом миграции на Java, который переносит BLOB-файлы из таблицы на сервер хранения Minio.Он работает таким образом, что клиент читает из исходной таблицы и отправляет определенные данные в виде значений POST на сервер REST.Эти значения затем записываются в новую таблицу и возвращается ссылка для отправки, через которую BLOB (преобразованный в файл) загружается на сервер Minio.Это обработчик POST из класса ресурсов

@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public UploadLink postFile(@Context UriInfo uriInfo, Attachment attachment) throws Exception {
    Integer id = attachmentService.createNew(attachment);
    UriBuilder builder = uriInfo.getAbsolutePathBuilder();
    String uploadLinkForFile = minioFileServer.getUploadLinkForFile("test", attachment.getUuid(), attachment.getName());
    UploadLink uploadLink = new UploadLink();
    uploadLink.setUploadLink(uploadLinkForFile);
    uploadLink.setLocation(builder.path(Integer.toString(id)).build());
    return uploadLink;
}

При вызове клиентом этот метод возвращает ссылку для загрузки и, используя PUT для ссылки для загрузки, клиент затем загружает этот файл на сервер minio.Сейчас я хочу внедрить на сервере прослушиватель веб-крюка, который будет прослушивать события, публикуемые сервером minio при каждой успешной загрузке.Как мне этого добиться?Нужно ли создавать API, который будет действовать как конечная точка в конфигурации Minio?Я был бы очень признателен за любые советы / помощь в этом.

1 Ответ

0 голосов
/ 17 октября 2018

Оказывается, в Minio есть функция webhook, которую можно использовать для отправки уведомлений о событиях на конечную точку.HTTP POST используется для отправки этих уведомлений.Итак, что я сделал для решения этой проблемы - я создал API, который будет принимать запросы POST, как этот.

@POST
@Path("webhook")
@Produces(MediaType.APPLICATION_JSON)
public Response webhookListener(NotificationConfiguration nc) throws JsonProcessingException {
    ObjectMapper mapper = new ObjectMapper();
    String jsonString = mapper.writeValueAsString(nc);        
    return Response.ok().entity(jsonString).build();
}

Итак, в основном, этот API, он получает уведомление от Webhook от Minio, которыйNotificationConfiguration тип данных, и я просто преобразовал его в JSON, используя Джексона, и возвратил его как сущность.Данные JSON содержат информацию о событии.

...