我有一个简单的DropWizard服务,我想要一个REST API来启动一个长期运行的处理任务 – 包括cpu和I / O绑定. REST调用不会等待任务完成,通知将通过轮询/长轮询/ Web套接字发生.
现在,我更愿意,如果我可以在Dropwizard中执行此操作并将所有内容保存在单个可部署的JAR中.我有什么选择?
更新:我感兴趣的是我在Dropwizard中运行长时间运行任务的选项,部署为没有外部依赖的单个jar.只是产生一个新线程?假设这样的请求很少,它可能会起作用,但应该有更好的选择.
解决方法
您可能想要使用托管资源:
http://www.dropwizard.io/1.0.5/docs/manual/core.html#managed-objects
设置线程池.然后,您的初始请求可以将消息推送到队列.您的线程池可以从队列中提取消息并异步处理它们.
您可以提供一个额外的端点,以便客户端可以获取异步进程的当前状态.