当前位置:网站首页>第二十章 使用工作队列管理器(三)
第二十章 使用工作队列管理器(三)
2022-07-07 17:56:00 【yaoxin521123】
文章目录
第二十章 使用工作队列管理器(三)
管理类别
一个类别是一个独立的worker jobs池。当初始化一组worker jobs时,可以指定提供worker的类别。如果集合中的任何worker jobs在执行work项时请求额外的worker jobs,则新的worker jobs来自同一类别。
例如,假设系统提供的 SQL 类别分配了最多 8 个worker。然后,假设与BusinessIntelligence相关的流程创建了一个类别,并将最多四个worker分配给该类别。如果 SQL 池中的所有worker在给定时间都参与了工作,则 BusinessIntelligence 类别中的worker可能仍然可以立即处理工作项。
系统包括两个不能删除的类别:SQL 和 Default。 SQL 类别适用于系统执行的任何 SQL 处理,包括查询的并行处理。当在未指定类别的情况下初始化一组worker jobs时,默认类别提worker jobs。
每个类别都具有影响该类别中每个工作队列的行为的属性。这些属性是:
DefaultWorkers
当创建此类别中的工作队列且未指定worker job 计数时,这将成为工作队列中worker job 的数量。此属性的默认值是核心数。
MaxActiveWorkers
在此类别的job服务请求池中保留的活动worker job的最大数量。检测到空闲job并自动启动新job以将最大活动job数保持在此限制附近。默认值为核心数的两倍。
MaxWorkers
此类别中工作队列的最大worker job数。如果在创建工作队列时指定了更多的worker job,则使用此限制。默认值为核心数的两倍。
要创建类别、调整类别属性和删除自定义类别,请导航到System Administration > Configuration > System Configuration > WQM Categories.。自定义类别的名称区分大小写,可能包含字母、数字、下划线、破折号和句点。
使用回调
回调是工作队列管理器在完成工作项后必须执行的代码。可以使用回调有两个原因:
- 执行依赖于工作项完成的工作
- 如果选择异步完成工作项,则表示所有排队的工作都已完成
包括工作项的回调
要添加回调,请在将工作项添加到工作队列时调用 QueueCallback() 方法而不是 Queue() 方法:
method QueueCallback(work As %String, callback As %String, args... As %String) as %Status
work 和 args 方法与 Queue() 方法相同。但是,回调参数使用以下语法指定要执行的回调代码:
##class(Classname).ClassMethod用于类方法$$entry^rtn用于子程序
类方法或子例程必须以相同的顺序接受与主工作项相同的参数。主进程将相同的参数传递给主工作项和回调代码。
回调代码可以访问以下公共变量:
%job,其中包含实际完成工作的进程的作业ID%status,其中包含工作单元返回的%Status值%workqueue,即工作队列实例的OREF
这些公共变量在回调中可用,但在工作项中不可用。
包括回调以确定完成
可以轮询工作队列管理器以确定完成,而不是使用 WaitForComplete() 方法等待工作队列中的所有排队工作完成后再返回主进程,如下所示:
- 如上一节所述,使用
QueueCallback()方法而不是Queue()方法将工作项添加到工作队列。 - 当所有工作项的工作完成后,在回调代码中将公共变量
%exit设置为1。 - 使用
Wait()方法而不是WaitForComplete()方法:
method Wait(qspec As %String, byRef AtEnd As %Boolean) as %Status
Wait() 方法等待来自回调的信号返回给调用者。具体来说,它等待回调代码将公共变量 %exit 设置为等于 1。Wait() 通过引用返回 AtEnd。 AtEnd 为 1 时,所有工作都已完成。或者,如果 AtEnd 为 0,则一个或多个工作项未完成。
控制当前设备的输出
默认情况下,如果工作项向当前设备生成输出(WRITE 语句),工作队列会将输出保存在缓冲区中,直到 WaitForComplete() 或 Wait() 结束。如果希望工作项更早地生成输出,请让该工作项调用 %SYSTEM.Context.WorkMgr 类的 Flush() 类方法,例如:
set sc = $system.Context.WorkMgr().Flush()
当工作项调用此方法时,会导致父工作队列写入工作项的所有已保存输出。
此外,可以使用 -d 标志来禁止对当前设备的所有输出。在这种情况下,Flush() 方法什么也不做,因为没有输出。
暂停和恢复工作队列
%SYSTEM.WorkMgr 类提供了可用于在工作队列中暂停和恢复工作的方法:
Pause()
method Pause(timeout As %Integer, ByRef completed As %Boolean = 0) as %Status
阻止与此工作队列关联的worker jobs接受来自此工作队列的其他项目。 Pause() 方法还会停止任何正在进行的工作项。
timeout 参数表示方法在停止正在进行的工作项之前等待的时间量(以秒为单位)。超时时间过后,该方法返回完成值,该值指示调用 Pause() 方法时正在进行的工作项是否已完成。因此,可以传入超时值 0 以立即知道worker jobs是否完成了工作队列中的所有工作项。
Resume()
method Resume() as %Status
如果之前已使用 Pause() 方法暂停,则恢复此工作队列中的工作。具体来说,此方法使工作队列进程能够接受并启动工作队列中的任何其他项目。
边栏推荐
- Chapter 9 Yunji datacanvas was rated as 36 krypton "the hard core technology enterprise most concerned by investors"
- The project manager's "eight interview questions" is equal to a meeting
- pom.xml 配置文件标签:dependencies 和 dependencyManagement 区别
- Throughput
- How to buy bank financial products? Do you need a bank card?
- R语言ggplot2可视化:使用ggpubr包的ggviolin函数可视化小提琴图、设置palette参数自定义不同水平小提琴图的填充色、add参数在小提琴图添加箱图
- vulnhub之tre1
- R language ggplot2 visualization: use the ggdensity function of ggpubr package to visualize the packet density graph, and use stat_ overlay_ normal_ The density function superimposes the positive dist
- Mysql, sqlserver Oracle database connection mode
- IP 工具类
猜你喜欢

8 CAS

9 原子操作类之18罗汉增强

PMP对工作有益吗?怎么选择靠谱平台让备考更省心省力!!!

Le PGR est - il utile au travail? Comment choisir une plate - forme fiable pour économiser le cœur et la main - d'œuvre lors de la préparation de l'examen!!!

CSDN syntax description

RESTAPI 版本控制策略【eolink 翻译】

Redis——基本使用(key、String、List、Set 、Zset 、Hash、Geo、Bitmap、Hyperloglog、事务 )

Detailed explanation of Flink parallelism and slot

Leetcode force buckle (Sword finger offer 36-39) 36 Binary search tree and bidirectional linked list 37 Serialize binary tree 38 Arrangement of strings 39 Numbers that appear more than half of the tim

Matplotlib drawing 3D graphics
随机推荐
【剑指offer】剑指 Offer II 012. 左右两边子数组的和相等
MIT科技评论文章:围绕Gato等模型的AGI炒作可能使人们忽视真正重要的问题
2022年投资哪个理财产品收益高?
Semantic slam source code analysis
UCloud是基础云计算服务提供商
Open source heavy ware! Chapter 9 the open source project of ylarn causal learning of Yunji datacanvas company will be released soon!
力扣 2315.统计星号
Kirin Xin'an with heterogeneous integration cloud financial information and innovation solutions appeared at the 15th Hunan Financial Technology Exchange Conference
Matplotlib drawing 3D graphics
开源OA开发平台:合同管理使用手册
Tp6 realize Commission ranking
JVM 类加载机制
831. KMP string
编译器优化那些事儿(4):归纳变量
J ü rgen schmidhub reviews the 25th anniversary of LSTM papers: long short term memory All computable metaverses. Hierarchical reinforcement learning (RL). Meta-RL. Abstractions in generative adversar
Navicat连接2002 - Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘解决
YoloV6:YoloV6+Win10---训练自己得数据集
9 atomic operation class 18 Rohan enhancement
一锅乱炖,npm、yarn cnpm常用命令合集
torch. nn. functional. Pad (input, pad, mode= 'constant', value=none) record