在异步Jax-RS请求中调用定时任务

时间:2013-06-26 07:06:42

标签: asynchronous jms jax-rs

我加入了一个使用Jax-RS的项目(最初也有相当多的基于Spring的Controller代码,但所有URL处理程序现在都使用Jax-RS)。现在我们希望能够填充应该在每个任务之间稍微延迟运行的任务队列。延迟可以以ms为单位指定。我避免使用Thread.sleep,因为我听说你不应该在Java EE中手动管理线程。在我进入之前,已经实现了繁忙的等待循环。

我想将其切换为异步后台任务。我当然可以让客户端以给定的延迟轮询服务器,并且只有一个可以恢复的AsyncResponse。但可以多次恢复/暂停相同的AsyncResponse吗?资源确实具有状态,因此可以完全删除异步并且只进行客户端轮询以处理所有异步。

许多用于展示异步任务的示例代码都使用Thread.sleep。在ExecutorService或类似的东西上执行此操作有多糟糕?

延迟的重点是模拟人工交互,并将一长串JMS消息发布到队列中,但要确保两个侦听器不会拾取并处理彼此依赖的消息。

在客户端而不是服务器端处理这个更容易/更好吗?编写一些处理所有轮询的JavaScript会非常简单,所以如果这对于服务器端处理来说似乎是一个坏主意,那就没那么大了。

1 个答案:

答案 0 :(得分:0)

该工具仅供单个用户使用,因为它是开发人员测试工具。因此,我们在客户端解决了这个问题,通过AJAX调用将消息推送到队列中。这适用于我们的目的,但如果有人有一个可能帮助其他人的解决方案。随意放弃新答案。