如何创建警报以在达到某个阈值百分比时通知用户DailyAsyncApex Executions

时间:2018-02-07 10:05:08

标签: asynchronous salesforce execution force.com

在过去一个月中,我们已经成功实现异步顶点执行的每日限制。 Salesforce暂时将我们的限制增加到425000,但在一周的时间内将缩减至250000。一旦我们达到极限,许多SF功能将失败,这对内部员工和外部客户都产生了巨大影响。

因此,为了防止将来发生这种情况,我们需要在Salesforce中创建某种警报来监控我们的每日异步顶点方法执行。我们的每日最高限额为250000.警报需要创建一个P3帮助台票,并在达到70%阈值时通知用户A和用户B.

请告知可以实现相同的目标

谢谢&问候, Harjeet

2 个答案:

答案 0 :(得分:1)

有一种很有前景的Limits方法,但它目前似乎不起作用(“保留供将来使用”):System.debug(Limits.getAsyncCalls() + ' / ' + Limits.getLimitAsyncCalls());

有一个想法可以投票:https://success.salesforce.com/ideaView?id=0873A0000003VIFQA2;)

您可以查询SELECT COUNT() FROM AsyncApexJob WHERE ...,但这听起来不错;)

我认为您最好的做法是使用SF REST API。您可以获取“限制”资源。你可以从SF本身做到这一点(不好主意,因为如果你计划它每小时运行一次,那么它当然也会导致极限消耗;))或者来自某些连接到你的SF的外部应用程序。 ..

https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/dome_limits.htm

您可以在workbench.developerforce.com中快速尝试一下,然后再决定是否要深入编写代码。

sample snapshot of the limits REST call

当然,如果您可以控制您的批处理作业,可以使用,可安排的,可安排的& @future调用你可以在一个帮助对象中实现一些粗略的执行计数器,例如......如果大多数工作来自托管包,那么对你来说不会有多大帮助......

还有一个想法,但它非常硬 - 您应该能够通过javascript进行REST API调用。因此你可以创建一个简单的VF页面(即使没有任何顶点控制器),在其上放置JS标注,每5分钟检查一次,如果达到阈值就做一些事情......但这意味着IT人员必须打开此页面所有的时间(也许作为主页组件)......凌乱:)

答案 1 :(得分:0)

我遇到了完全相同的问题,所以我在 NodeJS 中创建了一个简单的 JsForce 脚本来监控对 /limits 端点的调用。

您可以连接 UpTimerobot.com 或 PingDom.com 等免费监控服务,并在发现单词“警告”>50% 或“错误”>80% 时收到电子邮件。

async function getSfLimits() {
try {
    //Let's login into salesforce
    const login = await conn.login(SF_USERNAME, SF_PASSWORD+SF_SECURITY_TOKEN);
    //Call the API
    const sfLimits = await conn.requestGet('/services/data/v51.0/limits');

    return sfLimits;
} catch(err) {
    console.log(err);
}

}

https://github.com/carlosdevia/salesforcelimits