【问题标题】:How to work with asynchronous process from external client?如何使用来自外部客户端的异步进程?
【发布时间】:2020-04-26 17:31:59
【问题描述】:

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

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

每条链的工作时间不超过 10-15 秒。并且用户会话数少于每小时 500 个。

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

【问题讨论】:

  • 深帕萨尼亚,谢谢!
  • 好问题,但它真的是 Camunda 特有的,还是 Java 甚至 Spring 所特有的(我完全理解您在 Camunda 项目中一定会遇到这个问题)?也许您应该考虑删除其他标签。

标签: java spring asynchronous microservices camunda


【解决方案1】:

你能使用一些服务器推送技术吗?如果只是几秒钟,我会说在休息控制器中等待。

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

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

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

【讨论】:

  • 不幸的是,我们的应用程序是为封闭轮廓开发的 - 无法访问互联网。这就是为什么例如谷歌云消息不能用于任务解决方案的原因。我正在寻找 websockets,但希望存在一些服务器端技巧。
  • 您无需访问互联网即可发送消息。请查看rabbitmq.com,它适用于本地和云端。 Websockets 就是我说的服务器推送解决方案。
猜你喜欢
  • 2017-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多