jax-rs 如何在 REST 服务器中实现 webhook 侦听器?
jax-rs how can I implement a webhook listener in REST server?
我正在 Java 进行迁移项目,将 BLOB 文件从 table 迁移到 minio 存储服务器。它以客户端从源 table 读取并将某些数据作为 POST 值发送到 REST 服务器的方式运行。然后将这些值写入新的 table 并返回上传链接,BLOB(转换为文件)通过该链接上传到 minio 服务器。这是来自资源 class
的 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;
}
当客户端调用时,此方法 returns 上传链接并在上传链接上使用 PUT,然后客户端将此文件上传到 minio 服务器。我现在想做的是在服务器中实现一个 webhook 侦听器,它会在每次成功上传时侦听 minio 服务器发布的事件。我怎样才能做到这一点?我是否需要创建一个 API 作为 minio 配置的端点?我真的很感激任何形式的 advice/help。
事实证明 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 接收 webhook 通知,它是 NotificationConfiguration
数据类型,我只是使用 Jackson 将其转换为 JSON
和将其作为实体返回。 JSON
数据包含事件信息。
我正在 Java 进行迁移项目,将 BLOB 文件从 table 迁移到 minio 存储服务器。它以客户端从源 table 读取并将某些数据作为 POST 值发送到 REST 服务器的方式运行。然后将这些值写入新的 table 并返回上传链接,BLOB(转换为文件)通过该链接上传到 minio 服务器。这是来自资源 class
的 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;
}
当客户端调用时,此方法 returns 上传链接并在上传链接上使用 PUT,然后客户端将此文件上传到 minio 服务器。我现在想做的是在服务器中实现一个 webhook 侦听器,它会在每次成功上传时侦听 minio 服务器发布的事件。我怎样才能做到这一点?我是否需要创建一个 API 作为 minio 配置的端点?我真的很感激任何形式的 advice/help。
事实证明 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 接收 webhook 通知,它是 NotificationConfiguration
数据类型,我只是使用 Jackson 将其转换为 JSON
和将其作为实体返回。 JSON
数据包含事件信息。