288.6. Salesforce 制限 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) と組み合わせて使用して、いつ選択するかを選択できます。クエリーを実行します。

body.dailyApiRequests.remaining に保持されている整数値で 1.0 を乗算すると、式が浮動小数点演算と同じように評価されることに注意してください。それがなければ、整数除算が行われ、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()