1

我正在使用 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 服务器发布的事件。我怎样才能做到这一点?我是否需要创建一个 API 来充当 minio 配置的端点?我非常感谢任何形式的建议/帮助。

4

1 回答 1

0

原来 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 的作用是,它从 Minio 接收NotificationConfiguration数据类型的 webhook 通知,我只是将其转换为JSON使用 Jackson 并将其作为实体返回。JSON数据包含事件信息。

于 2018-10-17T16:07:18.260 回答