java - 调用 Jersey 服务 (PUT) 时发送电子邮件通知的设计问题

标签 java web-services design-patterns jersey

我在这里遇到设计问题。我有一个用 jersey 实现的 RESTful Web 服务.我也在用 spring mail 发邮件。

我的规范需要通知特定的用户组(大约 15-20 人)已发出 PUT 请求并通知他们资源的修改。此外,我需要向发出请求的客户端发送一个 JSON 数组作为响应。

现在我所做的是在修改我处理 PUT 服务的方法之后,我向用户发送电子邮件,然后返回 JSON 状态。

但是为什么客户端要等待邮件通知完成呢?如果我的用户列表很长,客户端等待很长时间才能得到响应怎么办?这不是他的头痛。但我也需要在 PUT 方法中通知用户。如果我返回 JSON,我将失去通过请求响应周期发送通知的上下文。

有更好的方法吗?

为了有一个想法,我提供了我的代码的相关部分:

 //first notify users
 notifyUsers(event,jsonEntity,NotificationType.TicketType.UPDATED);

 //then return response  
 return new JSONObject()
            .put("response_code:", Response.status(Status.OK).build())
            .put("title", evento.getDescrizioneevento())
            .put("status", getEventAsString(evento.getStatoevento()))
            .put("solved", evento.getCausascatenante());

最佳答案

使“notifyUsers”异步。

排队请求,稍后处理。您可以在单例中使用一个简单的 BlockingQueue,并使用一个线程监听另一端,或者您可以设置一个更正式的排队系统,例如 JMS。您还可以将请求插入到数据库中,并在其中监听 Activity 。

或者您可以直接在此处启动一个简单的线程,并让它在您从请求返回时运行。这也可以。

各种不同优缺点的选择。

关于java - 调用 Jersey 服务 (PUT) 时发送电子邮件通知的设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6836304/

相关文章:

java - 从 Java 的 CXF 服务获取 WS-Addressing 数据

android - 无模式数据存储相对于使用模式存储数据的优势

android - 在 ksoap2 for android 中使用不带 "i:type="属性的 addMapping

android - Model View Presenter 和依赖注入(inject)是否正在成为 Android 开发的新标准?

asp.net-mvc - Entity Framework 的状态模式

java - 奇怪的错误 : Skipping entry 0x106000d in package table 0 because it is not complex

java - maven 项目需要 sun.javadoc jar

java - 在 Java 中实例化 MVC 对象时处理依赖关系

Java/CSS - Vaadin : Add Switchbutton Background

java - 如何从 java 程序执行 bash 脚本