jax-rs如何在REST服务器中实现Webhook侦听器?

时间:2018-10-10 12:54:33

标签: java jax-rs minio

我正在使用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服务器。我现在想做的是在服务器中实现一个Webhook侦听器,该侦听器将在每次成功上传时侦听minio服务器发布的事件。我该如何实现?我是否需要创建一个充当minio配置端点的API?我真的很感激与此有关的任何建议/帮助。

1 个答案:

答案 0 :(得分:0)

结果证明Minio具有Webhook功能,可用于将事件通知发送到端点。 HTTP POST用于发送那些通知。因此,我为解决此问题所做的就是-我创建了一个API,该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的作用是,它从Minio接收数据为NotificationConfiguration的Minio的webhook通知,我已经使用Jackson将其简单地转换为JSON并将其作为实体返回。 JSON数据包含事件信息。