我尝试找到一种在响应后运行代码的方法,但没有成功。
就我而言,服务器向我发送数据以便让我完成工作,但此操作可能会很长(例如,向 5000 个联系人发送短信并检查谁收到了它)。服务器期望立即收到 HTTP 204 No Content 响应,以确保已收到数据。然后我的 web 应用程序将执行该操作并通过 REST API 发送状态。
我的问题是:如何发送响应然后执行代码?
现在我尝试过:
在每种情况下,为了测试连接是否在操作结束之前关闭,我会故意调用一个外部 URL,该 URL 需要 10 秒才能应答。每次,我的服务器都需要 10 秒才能回答。
我的 servlet 只是挂在上面,等待代码结束。
我无法使代码与 Executors 一起工作(这是新的),但即使我在线程执行期间遇到错误,我也想发送 HTTP 204 并另一方面处理错误。
是否有捷径可寻 ?
我使用后台线程来轮询队列表,以查找在发送响应之前不必执行的操作,并且这些操作将花费大约 0.1 秒以上的时间。例如,电子邮件发送者线程处理发送电子邮件以响应用户的操作,例如“感谢您的订单”消息。在这种情况下,servlet 生成电子邮件并将其作为记录附加到状态为“准备发送”的电子邮件表,然后让电子邮件发送者线程知道有一封新电子邮件准备发送。电子邮件发送者线程获取下一条最旧的“准备发送”消息,发送它,更新表并等待下一条。最酷的部分是从主程序发送电子邮件就像将一条记录附加到表中一样简单,然后继续前进,而无需每次都对 SMTP 服务进行麻烦。我有一个单独但非常相似的线程用于发送短信。如果后台进程无法处理负载并开始落后,只要您小心确保它们不会尝试获取队列中的相同记录,就很容易启动多个进程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)