前端需要调用一个API:
后端API需要这样一个流程完成任务:
这个任务的特征是:执行多个步骤,每个步骤可能使用的时间比较久。
请问:
1、请问后端要如何设计这个任务呢?
2、是否直接是一个方法里面包含多个方法的执行(同步执行完成这个大的任务方法),然后前端得到jobid,异步查询执行结果?
还是通过其他什么好的方式来设计?
是否需要考虑到任务的失败的情况,应该如何进行设计这个任务呢?
后端设计此类需要多步骤和长时间完成的任务时,通常应采用异步任务处理机制。这包括使用消息队列(如RabbitMQ, Kafka等)、任务调度器(如Celery, Quartz等)或工作流引擎(如Activiti, Camunda等)来管理任务的执行流程。
设计要点包括:
不建议在一个大的同步方法中直接包含多个方法的执行,因为这会导致API响应时间过长,用户体验差,并且系统资源利用效率低。更好的方案是使用异步任务处理框架:
如果任务流程较为复杂,涉及条件分支、循环等复杂逻辑,可以使用工作流引擎。工作流引擎允许你定义复杂的业务流程,并在需要时自动执行。
综上所述,设计此类任务时应充分考虑异步处理、任务分解、状态追踪、错误处理等因素,以提高系统的可扩展性、可靠性和用户体验。
我们有一个Spring Boot应用程序,并有计划的任务。 我们希望在多个服务器上部署我们的应用程序,因此将有多个应用程序实例。 如何将 Spring 配置为仅在指定的服务器上运行计划任务?
我们在spring boot应用程序中实现了一个计划任务,用于从MQ读取消息。在IntelliJ中调试时,我看到任务的线程被启动,然后在任务完成后进入等待状态。 这是正常的还是应该在任务完成后停止/销毁线程?此外,我们必须手动执行还是Spring会处理它(任务代码中的某些内容正在阻止它)
比如说有个需求, 任务1执行完成了, 将数据存到数据库了, 然后立马要开启下一个任务, 获取所有的数据和其他表的数据进行清洗, 然后存到另一个表里 第一个任务是从kafka里获取的增量数据, 然后直接存到库里, flink执行起来就是source -> sink -> execute 这时候第一个任务完成了, 要开启第二个任务了, 需要从数据库里获取新的数据和其他表的数据进行清洗 source -
问题内容: 我是python和线程的新手。我已经编写了充当网络爬虫的python代码,并在网站中搜索特定的关键字。我的问题是,如何使用线程同时运行类的三个不同实例。当实例之一找到关键字时,所有三个实例都必须关闭并停止爬网。这是一些代码。 如何使用线程让Crawler同时执行三个不同的爬网? 问题答案: 似乎没有一种(简单的)方法可以终止Python中的线程。 这是一个并行运行多个HTTP请求的简单
问题内容: 我有一个ScheduledThreadPoolExecutor,可用来计划以固定速率运行的任务。我希望任务以指定的延迟最多运行10次,直到它“成功”为止。之后,我将不希望重试该任务。因此,基本上,当我希望停止计划任务时,需要停止运行它,但又不关闭ScheduledThreadPoolExecutor。知道我会怎么做吗? 这是一些伪代码- 问题答案: 运行此测试,它会打印并停止
我在context.xml文件中定义了一个Spring调度任务,它每分钟运行一次。该任务调用postgres存储过程。存储过程运行时可以持续一分钟以上。如果当前运行没有完成,spring框架会调用相同的调度程序吗?谢谢,