288.6. Using Salesforce Limits API

通过 salesforce:limits 操作,您可以从 Salesforce 网站获取 API 限制,然后对收到的数据执行操作。salesforce:limits 操作的结果映射到 org.apache.camel.component.salesforce.api.dto.Limits 类,并可用于自定义处理器或表达式。

例如,您需要限制 Salesforce 的 API 使用,以便保留每日 API 请求的 10%。输出消息正文包含一个 org.apache.camel.component.salesforce.api.dto.Limits 对象,它们可与 Content Based Router 和 Content Based Router 和 Spring Expression Language (SpEL) 结合使用,以便在执行查询时选择。

请注意,在 正文中保留的整数值多了 1.0。dailyApiRequests.remaining 使表达式评估为浮点 arithtic (不使用它)的 - 它最终会得到一个完整的、由 0 ( 消耗的 API 限制)或 1 ( 没有消耗的 API 限制)。

from("direct:querySalesforce")
    .to("salesforce:limits")
    .choice()
    .when(spel("#{1.0 * body.dailyApiRequests.remaining / body.dailyApiRequests.max < 0.1}"))
        .to("salesforce:query?...")
    .otherwise()
        .setBody(constant("Used up Salesforce API limits, leaving 10% for critical routes"))
    .endChoice()