Java 如何使用来自外部客户端的异步进程?

Java 如何使用来自外部客户端的异步进程?,java,spring,asynchronous,microservices,camunda,Java,Spring,Asynchronous,Microservices,Camunda,请给我一些关于任务解决方案的最佳模式的建议。我的任务是: 用户通过自己的rest向Camunda处理器发出请求 控制器 后端端的BPMN模式由一个 几种异步服务 数据将准备就绪,以供响应 只有当BPMN上的一个最终服务成功时,用户才能使用它 每条链条的工作时间不超过10-15秒。用户会话数每小时不到500次 如何组织rest控制器的工作?强制控制器在同一调用中等待结果是否可以接受?瓶颈在哪里?您可以使用一些服务器推送技术吗?如果只是几秒钟,我会说在rest控制器中等待 在15秒的时间里,考虑到可

请给我一些关于任务解决方案的最佳模式的建议。我的任务是:

  • 用户通过自己的rest向Camunda处理器发出请求 控制器
  • 后端端的BPMN模式由一个 几种异步服务
  • 数据将准备就绪,以供响应 只有当BPMN上的一个最终服务成功时,用户才能使用它
  • 每条链条的工作时间不超过10-15秒。用户会话数每小时不到500次


    如何组织rest控制器的工作?强制控制器在同一调用中等待结果是否可以接受?瓶颈在哪里?

    您可以使用一些服务器推送技术吗?如果只是几秒钟,我会说在rest控制器中等待

    在15秒的时间里,考虑到可伸缩性,我会说对客户机遵循某种异步模式来实现

  • 客户端发送一个做某事的请求
  • 控制器将工作委托给某个外部进程,并返回给客户机ok
  • 过程结束,并准备好响应
  • 如果另一端是浏览器,则使用某种服务器推送技术通知它。如果是应用程序,则使用某种rpc、轮询或任何其他进程间机制进行通信
    请注意,根据托管技术的不同,对并发连接有不同的限制。查看tomcat。

    深帕萨尼亚,谢谢!这个问题问得好,但它真的是针对Camunda的吗?就这一点而言,甚至是java和Spring(我完全理解,您一定在Camunda项目中遇到了这种情况)?也许你应该考虑删除额外的标签。不幸的是,我们的应用程序是为封闭式的开发而开发的,没有互联网。这就是为什么谷歌云消息不能用于任务解决方案的原因。我正在查看WebSocket,但希望存在一些服务器端技巧。您不需要访问internet进行消息传递。请检查哪些在prem和cloud上都有效。WebSocket是我所说的服务器推送解决方案。