268.6. Salesforce Limits API の使用
salesforce:limits
操作を使用すると、Salesforce から API 制限を取得し、受信したそのデータに対して処理できます。salesforce:limits
操作の結果は org.apache.camel.component.salesforce.api.dto.Limits
クラスにマップされ、カスタムプロセッサーまたは式で使用できます。
たとえば、Salesforce の API の使用状況を制限し、日次 API 要求が他のルート用に 10% のままになるようにする必要があるとします。出力メッセージのボディーには、クエリーの実行時に選択できる Content Based Router および Content Based Router and Spring Expression Language(SpEL) と共に使用できる org.apache.camel.component.salesforce.api.dto.Limits
オブジェクトのインスタンスが含まれます。
body
に保持される整数値で 1. .
dailyApiRequests.remaining0
を乗算したことで、式が浮動小数十の浮動小数学的に評価され、ゼロ(一部の 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()
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()