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

标签 java spring asynchronous microservices camunda

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

  1. 用户通过自己的休息向Camunda处理器发出请求 Controller
  2. 后端的 BPMN 模式由一系列 几个异步服务
  3. 数据将准备好响应 只有当 BPMN 上的一项最终服务成功时,用户才可以。

每条链的工作时间不超过 10-15 秒。用户 session 数每小时少于 500。

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

最佳答案

可以使用一些服务器推送技术吗?如果只是几秒钟,我会说去休息 Controller 等待。

在 15 秒内考虑可伸缩性,我会说与客户端遵循某种异步模式。

  1. 客户发送请求做某事
  2. Controller 将工作委托(delegate)给一些外部进程并返回给客户端ok
  3. 流程结束,响应准备就绪。
  4. 如果对方是浏览器,使用某种服务器推送技术来通知它。如果是应用程序,则使用某种 rpc、轮询或任何其他进程间机制进行通信。

请注意,根据托管技术的不同,对并发连接的限制也不同。检查Spring Boot - Limit on number of connections created对于 tomcat。

关于java - 如何使用来自外部客户端的异步进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59658414/

相关文章:

Java:Vector<derived> 可以被称为 Vector<base> 吗?

java - Freemarker - 如何访问传入的数组中的值?

java - Repaint()方法导致UI闪烁

java - 不知道如何使用 PDFBox

java - Java 上的 LRU 项目

java - 带有斜杠的 HttpServletRequest 变量与 %2f

objective-c - 在 Objective-C 中同步异步任务

java - Spring行为中的@async是同步的

javascript - async.auto 结果对象应该有一个值,但有一个包含两个值的数组

java - 无法构建 EntityManagerFactory