我正在从批处理类调用可排队类,反之亦然。现在陷入了 apex 中批处理和可排队类的无限循环执行中。我该如何中止它。当我尝试从 Apex 作业中中止作业时,它完成了执行并且无法中止它。有什么解决方案吗?还是它会继续下去?
最佳答案
2
如果您的批次在入队时没有明确设置延迟,您可以将设置为一个较高的值,等待可排队对象入队然后杀死(中止)它们。
另一种方法是确保部署允许待处理的 apex 进行更新,并部署对批处理代码的更改,以防止其进入队列。
1
-
谢谢@Phil,效果非常好。
–
|
这还没有经过测试,但是我会尝试从 Execute Anonymous 执行类似这样的操作:
for(AsyncApexJob job : [SELECT Id
FROM AsyncApexJob
WHERE Status IN('Holding', 'Preparing', 'Processing', 'Queued')
AND ApexClass.Name IN('MyBatchClass', 'MyQueueableClass')]) {
System.abortJob(job.Id);
}
如果这不能终止所有作业,我会将其包装在一个循环中(看起来很奇怪),循环执行整个过程十次。因为我怀疑在中止旧作业的同时可能会创建新作业,而前者也需要尽快终止。
0
|
|