当前位置:网站首页>第二十章 使用工作队列管理器(三)
第二十章 使用工作队列管理器(三)
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() 方法暂停,则恢复此工作队列中的工作。具体来说,此方法使工作队列进程能够接受并启动工作队列中的任何其他项目。
边栏推荐
- mock. JS returns an array from the optional data in the object array
- 小试牛刀之NunJucks模板引擎
- UCloud是基础云计算服务提供商
- The DBSCAN function of FPC package of R language performs density clustering analysis on data, checks the clustering labels of all samples, and the table function calculates the two-dimensional contin
- Time tools
- RESTAPI 版本控制策略【eolink 翻译】
- openEuler 资源利用率提升之道 01:概论
- 注解。。。
- R language uses ggplot2 function to visualize the histogram distribution of counting target variables that need to build Poisson regression model, and analyzes the feasibility of building Poisson regr
- Interpretation of transpose convolution theory (input-output size analysis)
猜你喜欢

8 CAS

开源OA开发平台:合同管理使用手册

The project manager's "eight interview questions" is equal to a meeting

小试牛刀之NunJucks模板引擎

华南X99平台打鸡血教程

Automatic classification of defective photovoltaic module cells in electroluminescence images-論文閱讀筆記

Open source heavy ware! Chapter 9 the open source project of ylarn causal learning of Yunji datacanvas company will be released soon!

LeetCode力扣(剑指offer 36-39)36. 二叉搜索树与双向链表37. 序列化二叉树38. 字符串的排列39. 数组中出现次数超过一半的数字

8 CAS

关于ssh登录时卡顿30s左右的问题调试处理
随机推荐
使用高斯Redis实现二级索引
网信办公布《数据出境安全评估办法》,9 月 1 日起施行
让这个 CRMEB 单商户微信商城系统火起来,太好用了!
Welcome to the markdown editor
R语言dplyr包select函数、group_by函数、filter函数和do函数获取dataframe中指定因子变量中指定水平中特定数值数据列的值第三大的值
mock.js从对象数组中任选数据返回一个数组
Specify the version of OpenCV non-standard installation
Automatic classification of defective photovoltaic module cells in electroluminescence images-论文阅读笔记
开源重器!九章云极DataCanvas公司YLearn因果学习开源项目即将发布!
位运算介绍
gorilla官方:golang开websocket client的示例代码
Version selection of boot and cloud
Interpretation of transpose convolution theory (input-output size analysis)
Make this crmeb single merchant wechat mall system popular, so easy to use!
How to buy bank financial products? Do you need a bank card?
微信公众号OAuth2.0授权登录并显示用户信息
关于cv2.dnn.readNetFromONNX(path)就报ERROR during processing node with 3 inputs and 1 outputs的解决过程【独家发布】
Flink并行度和Slot详解
Training IX basic configuration of network services
ant desgin 多选