当前位置:网站首页>Using the Work Queue Manager (4)
Using the Work Queue Manager (4)
2022-08-03 12:32:00 【User 7741497】
分离和附加工作队列
通常,初始化一组工作程序,将工作项排队,然后等待工作程序完成工作项.但是,可能会遇到工作人员作业完成工作项所需的时间比预期更长的情况,或者无法将单个进程专门用于等待.因此,工作队列管理器使能够将工作队列与进程分离,然后将工作队列附加到同一进程或不同的进程.
例如,假设队列引用了初始化的工作队列.还假设向工作队列中添加了几个工作项.在调用 Wait() 或 WaitForComplete() 来确定正在处理的工作的状态之前,可以使用以下方法:
Detach()
method Detach(ByRef token As %String, timeout As %Integer=86400) as Status从初始化工作队列时创建的对象引用中分离工作队列对象. Detach() 方法使任何正在进行的工作能够继续并保留工作队列的当前状态.
token 参数表示一个安全令牌,可以使用它随后将工作队列附加到另一个进程. timeout 参数是可选的,它指示系统保留分离的工作队列对象的时间量(以秒为单位).超时期限过后,系统会删除与工作队列关联的所有工作人员作业和信息.超时的默认值为 1 天.
调用 Detach() 方法后,对分离对象引用的大多数调用都会返回错误.但是,NumActiveWorkers() 和 NumWorkers() 方法返回 -1.
Attach()
Attach(token, ByRef sc As %Status) as WorkMgr如果工作队列对象仍在内存中,则将新对象引用附加到先前分离的工作队列对象. Attach() 方法返回与工作队列关联的工作队列管理器的新实例.可以随后调用工作队列上的方法.例如,可以调用超时值为 0 的 Wait() 方法来确定队列在分离之前是否已完成任何工作项.
token 参数表示之前在工作队列上调用的 Detach() 方法返回的安全令牌.
例如,可以分离然后附加一个工作队列,如下所示:
s sc = queue.Detach(.token,60)
if $$$ISERR(sc) {
ret sc
}
s queue = $system.WorkMgr.Attach(token,.sc)
if $$$ISERR(sc) {
ret sc
}停止工作队列并删除工作项
可以停止工作队列、中断正在进行的任何工作项并移除任何排队的工作项.为此,请调用工作队列的 Clear() 方法.
method Clear(timeout As %Integer = 5) as %Status给定超时时间超时(以秒为单位),此方法等待工作人员作业完成其当前任务,然后终止作业.系统删除然后重新创建工作队列,不附加任何工作项.之后,系统立即从 Wait() 或 WaitForComplete() 返回.
指定安装和拆卸处理
每个工作队列通常有多个worker jobs.如果工作项多于工作项,则工作项将执行多个工作项,一次一个.在这些工作项开始之前确定所需的任何设置步骤并在将工作项添加到队列之前调用所有此类逻辑是很有用的.
%SYSTEM.WorkMgr 类提供方法 Setup() 和 TearDown(),可以使用它们来定义工作人员作业的设置活动和清理活动.例如,使用 Setup() 设置在工作作业中使用的公共变量,并使用 TearDown() 杀死这些变量.还可以使用 Setup() 取出锁并设置进程私有全局变量,并且将使用 TearDown() 释放这些锁并删除这些全局变量.
在任何一种情况下,都必须在调用 Queue() 或 QueueCallback() 之前调用 Setup()、TearDown() 或两者. Setup() 和 TearDown() 方法将信息保存在仅供工作队列管理器使用的内部全局变量中.当任何工作人员作业从该队列开始其第一个工作项时,该工作人员作业首先检查工作管理器队列全局变量以查看是否有任何设置逻辑.如果是这样,worker 作业将执行该逻辑,然后启动工作项. worker 作业不会再次执行设置逻辑.类似地,在任何工作作业完成队列中的最后一个工作项后,该工作作业检查是否有任何拆卸逻辑.如果是这样,worker 作业将执行该逻辑.
下面提供了这些方法的详细信息:
Setup()
method Setup(work As %String, args... As %String) as %Status指定工作进程在处理队列中的第一项之前要调用的代码.如果使用此方法,则必须在调用 Queue() 或 QueueCallback 方法之前调用它. Setup() 接受以下参数:
work- 要执行的设置代码.此参数支持的语法与Queue()方法的work参数支持的语法相同,这在上一节中进行了描述.args- 此代码的参数的逗号分隔列表.要将多维数组作为参数传递,可以在该参数前面加上句点,以便通过引用传递它.应该保持在这些参数中传递的数据的大小相对较小.要提供大量信息,可以使用全局而不是传递参数.
TearDown()
method TearDown(work As %String, args... As %String) as %Status指定工作进程在处理完队列中的最后一项后调用以将进程恢复到其先前状态的代码.如果使用此方法,则必须在调用 Queue() 或 QueueCallback 方法之前调用它.
TearDown() 接受与 Setup() 方法相同的参数.但是,work 参数指定要执行的拆解代码.
边栏推荐
- Mysql重启后innodb和myisam插入的主键id变化总结
- 第5章 实现首页Tab数据展示
- 浅谈低代码平台远程组件加载方案
- net start mysql 启动报错:发生系统错误5。拒绝访问。
- After completing the interview and clearance collection of Alibaba, I successfully won the 15th Offer this year
- The new interface, jingdong comment interface
- From the physical level of the device to the circuit level
- Oracle安装完毕(系统盘),从系统盘转移到数据盘
- (通过页面)阿里云云效上传jar
- 业界新标杆!阿里开源自研高并发编程核心笔记(2022最新版)
猜你喜欢

基于php校园医院门诊管理系统获取(php毕业设计)

基于英雄联盟的知识图谱问答系统

PC client automation testing practice based on Sikuli GUI image recognition framework

如何免费获得一个市全年的气象数据?降雨量气温湿度太阳辐射等等数据

Five super handy phone open-source automation tools, which is suitable for you?

App自动化测试怎么做?实战分享App自动化测试全流程

链游NFT元宇宙游戏系统开发技术方案及源码

YOLOv5 training data prompts No labels found, with_suffix is used, WARNING: Ignoring corrupted image and/or label appears during yolov5 training

Feature dimensionality reduction study notes (pca and lda) (1)

(through page) ali time to upload the jar
随机推荐
基于php志愿者服务平台管理系统获取(php毕业设计)
ROS中编译通过但是遇到可执行文件找不到的问题
-找树根2-
Explain the virtual machine in detail!JD.com produced HotSpot VM source code analysis notes (with complete source code)
Blog records life
《数字经济全景白皮书》金融数字用户篇 重磅发布!
LyScript implements memory stack scanning
安全自定义 Web 应用程序登录
【Verilog】HDLBits题解——Verification: Reading Simulations
Grafana 高可用部署最佳实践
如何免费获得一个市全年的气象数据?降雨量气温湿度太阳辐射等等数据
信创建设看广州|海泰方圆亮相2022 信创生态融合发展论坛
PC client automation testing practice based on Sikuli GUI image recognition framework
C language advanced article: memory function
c语言进阶篇:内存函数
从零开始Blazor Server(6)--基于策略的权限验证
海外代购系统/代购网站怎么搭建——源码解析
常用lambda表达式
bash if conditional judgment
After completing the interview and clearance collection of Alibaba, I successfully won the 15th Offer this year