这是我尝试使用Jersey 1.8和Java 6编写的基本方法。
@GET
@Path("/{teamId}")
@Produces(MediaType.TEXT_PLAIN)
public String getTeamInfo(@PathParam("teamId") final int teamId, @Context HttpServletRequest httpServletRequest) {
if(!updatingCache) {
//do some work
return info;
}
else if(updatingCache) {
//add http request to a queue to be processed once the cache is updated
return info;
}
}
有时该方法用作基本的 REST 服务,但如果正在更新缓存,则传入的请求应在缓存更新后进入队列进行处理。
我想过尝试将整个添加HttpServletRequest
到队列中,但它会在返回信息之前阻塞,并且所有传入的请求都应该在缓存更新时添加到队列中。
当服务启动时,它会启动一个后台线程,该线程使用 JeroMQ(ZeroMQ 的纯 Java 实现)来侦听消息以更新缓存。
处理这种情况的最佳方法是什么?
PS,我是一名有 4 周经验的实习生 :)
更新:
我认为 @Suspended 注释以及 Jersey 的AsyncResponse
课程将完成我正在寻找的东西。不幸的是,该类是在 Jersey 2.0 中引入的,我必须使用 1.8。任何人都可以提出类似的建议吗?