【问题标题】:jax-rs how can I implement a webhook listener in REST server?jax-rs 如何在 REST 服务器中实现 webhook 侦听器?
【发布时间】:2018-10-10 12:54:32
【问题描述】:

我正在使用 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 配置的端点?我非常感谢任何形式的建议/帮助。

【问题讨论】:

    标签: java jax-rs minio


    【解决方案1】:

    事实证明 Minio 具有 webhook 功能,可用于将事件通知发送到端点。 HTTP POST 用于发送这些通知。所以,我为解决这个问题所做的是 - 我创建了一个可以接受这样的 POST 请求的 API。

    @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 通知,我只是使用 Jackson 将其转换为 JSON 并将其作为实体返回。 JSON 数据包含事件信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-03
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多