当前位置:网站首页>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 参数指定要执行的拆解代码.
边栏推荐
- -找树根2-
- Vs Shortcut Keys---Explore Different Programming
- 如何免费获得一个市全年的气象数据?降雨量气温湿度太阳辐射等等数据
- 学习软件测试需要掌握哪些知识点呢?
- R语言ggplot2可视化:使用ggpubr包的ggsummarystats函数可视化箱图(通过ggfunc参数设置)、在可视化图像的下方添加描述性统计结果表格
- Simple implementation of a high-performance clone of Redis using .NET (1)
- Last blog for July
- 免费的网络传真平台_发传真不显示发送号码
- 数据库系统原理与应用教程(074)—— MySQL 练习题:操作题 141-150(十八):综合练习
- YOLOv5训练数据提示No labels found、with_suffix使用、yolov5训练时出现WARNING: Ignoring corrupted image and/or label
猜你喜欢

Explain the virtual machine in detail!JD.com produced HotSpot VM source code analysis notes (with complete source code)

shell编程条件语句

From the physical level of the device to the circuit level

How does Filebeat maintain file state?

622. 设计循环队列

Kubernetes 网络入门

5个超好用手机开源自动化工具,哪个适合你?

【云原生 · Kubernetes】部署Kubernetes集群

Knowledge Graph Question Answering System Based on League of Legends

链游NFT元宇宙游戏系统开发技术方案及源码
随机推荐
Last blog for July
nacos app
什么是分布式锁?几种分布式锁分别是怎么实现的?
YOLOv5 training data prompts No labels found, with_suffix is used, WARNING: Ignoring corrupted image and/or label appears during yolov5 training
新评论接口——京东评论接口
Five, the function calls
第3章 搭建短视频App基础架构
从零开始Blazor Server(6)--基于策略的权限验证
3年软件测试经验,不懂自动化基础...不知道我这种测试人员是不是要被淘汰了?
Blazor Server(6) from scratch--policy-based permission verification
mysql advanced (twenty-four) method summary of defense against SQL injection
【必读要点】Pod控制器Deployment更新、回退详解
数据库系统原理与应用教程(076)—— MySQL 练习题:操作题 160-167(二十):综合练习
ROS中编译通过但是遇到可执行文件找不到的问题
查看GCC版本_qt版本
R语言ggplot2可视化:使用ggpubr包的ggsummarystats函数可视化箱图(通过ggfunc参数设置)、在可视化图像的下方添加描述性统计结果表格
LyScript 实现对内存堆栈扫描
Knowledge Graph Question Answering System Based on League of Legends
R语言ggplot2可视化:使用ggpubr包的ggline函数可视化折线图、设置add参数为mean_se和dotplot可视化不同水平均值的折线图并为折线图添加误差线(se标准误差)和点阵图
广州番禺:暑期防溺水,安全不放假