【发布时间】:2016-03-05 22:59:30
【问题描述】:
我正在 Google App Engine 中实现一个基本的任务队列。没什么特别的,因为我正在学习介绍。 (推送)队列工作正常,但我想在任务完成时向相关 http 会话的用户发送一点确认(或失败)消息。
我的结构设置方式:
一个 HttpServlet 接收到一个传入的 HttpServletRequest
从 HttpSession 中检索到一些信息,用于生成任务 + 将其存储在任务队列中
另一个HttpServlet(worker)接收来自队列的传入请求以执行任务
任务被执行
-
(这是我没有设法实现的步骤:)为 HttpSession 将一些信息发送到 .jsp,该 HttpSession 将任务插入队列
李>
通常我会通过从 HttpServletRequest 中检索会话来做到这一点,但在这种情况下,发起请求的是队列本身(而不是发起任务的用户)。我无法将 HttpSession 作为字节数组传递给参数,因为我需要保留对同一会话的引用。
我能够将会话中的 id 作为参数传递给我的工作人员,但我不知道如何通过此 id 找到对会话的引用。
这里有可能用 FutureValue 做一些事情:https://github.com/GoogleCloudPlatform/appengine-pipelines/tree/master/java/src/main/java/com/google/appengine/tools/pipeline 但我完全不知道它是如何使用的。
在 HashMap / 数据存储中保存每个用户的 http 会话似乎是一种不好的做法,因为用户可能不想保留数据。
那么,关于如何在任务完成/失败时向启动任务的用户发送异步消息有什么想法吗?
【问题讨论】:
标签: java google-app-engine session