场景:用job的方式在接口里启用job,如果接口调用比较频繁,存在同一时间启动相同job的情况,会导致锁表锁程序这种情况。
查阅job函数,发现在JOB_CLOSE函数里自带了类似队列的参数,但是因为是接口,没办法直接获取到前一个job对应的参数。
于是选用了QRFC的方式设置队列执行,只有当前一个队列执行完成之后,下一个队列才会继续运行。
首先需要sm59注册一个内部链接目标,可以参考自带的NONE;
然后通过SMQS注册这个目标,如果不想注册可以直接用NONE,之后就可以调用函数用DESTINATION参数生成这个队列。
程序代码如下图,TRFC_SET_QUEUE_NAME用来设置队列名称,DESTINATION 是用来设置RFC目标链接。
执行完成之后,执行SMQ1,查看这个入站队列,如果报错,队列会卡在报错的那条上,后续不执行,需要人工干预处理。