zeebe作业人员

作业人员

作业人员是能够执行工作流中特定步骤的组件。

什么是作业?

作业是工作流中的工作项。例如:

作业具有以下属性:

向代理索取作业

作业人员每隔一定的时间间隔(即轮询)向代理请求某种类型的作业。此间隔和请求的作业数可以在Zeebe客户端中配置。

如果有一个或多个所请求类型的作业可用,则代理会将激活的作业流式传输给工作人员。接收到作业后,工作人员将执行这些作业,并 根据作业是否可以成功完成来发送每个作业的完成失败消息。

例如,下面的工作流可能产生三种不同类型的作业:process-paymentfetch-itemsship-parcel

订单工作流程模型

 

三种不同的作业人员,每种工作人员各一种,可以向Zeebe申请工作:

zeebe作业人员要求作业

 

许多工人可以请求相同的工作类型,以扩大处理规模。在这种情况下,代理确保将每个作业仅发送给其中一个工人。在作业完成,失败或作业激活超时之前,该作业被视为已激活。

在请求作业时,可以设置以下属性:

长时间轮询

如果没有可用的作业,可以立即完成作业请求。为了找到要处理的工作,工作人员现在需要再次轮询可用的工作。这导致工人重复发送请求直到有工作可用的情况。就资源使用而言,这是昂贵的,因为客户端和服务器都执行大量非生产性的工作。为了更好地利用资源,Zeebe可以对可用的工作进行长时间的轮询

随着长轮询启用后,当没有可用的工作请求将保持开放。当至少一项作业可用时或在指定的持续时间之后,该请求完成。工作人员还可以将RequestTimeout指定为保持请求打开的持续时间。默认请求超时为10秒,但也可以在客户端中配置。可以使用配置标志gateway.longPolling.enabled或环境变量禁用对可用作业的长时间轮询 ZEEBE_GATEWAY_LONGPOLLING_ENABLED。默认情况下启用。

作业排队

Zeebe将创建作业与执行作业分离开来。始终可以以尽可能高的速度创建工作,而不管是否有工人在工作。这是可能的,因为Zeebe将作业排队直到工人要求他们为止。如果当前没有作业工作者正在请求作业,则作业将保持排队状态。因为工人要求经纪人提供工作,所以工人可以控制接受新工作的速度。

这使代理可以处理突发流量,并有效地充当作业人员面前的缓冲区

完成和失败的作业

处理激活的作业后,作业人员可以通知代理该作业已完成或失败。如果作业工作者可以成功完成其工作,则可以通过发送完整的作业命令将该成功通知给代理。如果无法在配置的作业激活超时内完成作业,则代理将使该作业可再次供其他作业工作者使用。

为了公开作业的结果,作业工人可以使用完整的作业命令传递变量。这些变量将根据输出变量映射合并到工作流实例中。请注意,这可能会覆盖现有变量,并可能导致并行流中的竞争条件。我们建议仅使用那些需要更改的变量来完成作业。

如果作业工作者无法成功完成其工作,则可以通过发送失败作业命令将该失败通知代理。失败作业命令包括剩余的重试次数。如果这是一个正数,则该作业将立即可以再次激活,并且工作人员可以尝试再次进行处理。但是,如果它是零或负数,则将引发一个事件,并且直到该事件解决后,才能激活该作业。

 

相关教程