0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure Data Factroy にて Salesforce コネクターを利用した際における同時 API 要求数の制限の検証

Posted at

概要

Azure Data Factory で Salesforce コネクター(Bulk API 2.0)を使用した際に、Salesforce の同時 API 要求数の制限によるエラーが発生するかどうかを検証しました。その結果、Azure Data Factory で Salesforce からデータを 160 並列で読み込むとエラーが発生することが確認されました。メモ程度ですが、記録として残しておきます。

[{"message":"ConcurrentRequests (Concurrent API Requests) Limit exceeded.","errorCode":"REQUEST_LIMIT_EXCEEDED"}]

Salesforce の同時 API 要求数の制限については、Salesforce のドキュメントに記載されています。今回の検証結果では、80 並列の実行は正常に終了し、160 並列の実行でエラーが発生しました。このことから、並列実行数が制限を超えた場合でも、即座にエラーが発生するとは限らないことがわかりました。

image.png

事前準備

1. データの準備

Snowfakeryというライブラリにて、検証用のデータを生成しました。データについては、 Databricks というサービス上で作成しています。

- var: count
  value: 99999

# - include_file: user.yml
# - include_file: Product2_PricebookEntry.yml
# - include_file: account_contact_lead_opportunity_order.yml

- object: case
  count: ${{count}}
  fields:
    IsDeleted: False
    MasterRecordId: null
    CaseNumber: ${{fake.random_int(min=40000, max=50000)}}
    ContactId: null
    AssetId: null
    ParentId: null
    SuppliedName: ${{fake.name}}
    SuppliedEmail: ${{fake.email}}
    SuppliedPhone: ${{fake.phone_number}}
    SuppliedCompany: ${{fake.company}}
    Type: 
      random_choice: 
        問い合わせ: 80%
        クレーム: 20%
    Status: 
      random_choice: 
        新規: 25%
        処理中: 25%
        完了: 25%
        クローズ: 25%
    Priority: 
      random_choice: 
        : 33%
        : 34%
        : 33%
    Origin: 
      random_choice: 
        Web: 20%
        Email: 20%
        Phone: 20%
        Social: 20%
        Other: 20%
    Subject: ${{fake.sentence(nb_words=6)}}
    Description: "${{fake.text}}"
    IsClosed: ${{fake.boolean}}
    ClosedDate: ${{fake.date_this_year}}
    CreatedDate: ${{fake.date_this_year}}
    CreatedById: ${{fake.uuid4}}
    LastModifiedDate: ${{fake.date_this_year}}
    LastModifiedById: ${{fake.uuid4}}
    SystemModstamp: ${{fake.date_this_year}}
    LastViewedDate: null
    LastReferencedDate: null
    Reason: Null
    IsEscalated: Null
    ContactPhone: Null
    ContactMobile: Null
    ContactEmail: Null
    ContactFax: Null
    Comments: Null
%sh
snowfakery data_config/acc.yml --output-format CSV --output-folder sample_data_01

image.png

2. Azure Data Factory にて Salesforce へデータを書き込み

Snowfakery にて作成して同一データを Azure Data Factory から何度か実行して Saleforce へ書き込みました。

image.png

3. Azure Data Factory にて Saleforce からデータの読み込み

Salesforce からデータの読み込みが実施できることを確認しました。

image.png

検証

1. Azure Data Factory にて Saleforce からデータの読み込みを 80 並列で実行

Azure Data Factory にて Saleforce からデータの読み込み処理を 80 回呼び出すプログラムを実行したところ、正常終了しました。

image.png

2. Azure Data Factory にて Saleforce からデータの読み込みを 31 並列で実行

Azure Data Factory にて Salesforce へデータを書き込む処理を 31 回呼び出すプログラムを実行したところ、正常終了しました。

image.png

3. Azure Data Factory にて Saleforce からデータの読み込みとAzure Data Factory にて Saleforce からデータの読み込みを 80 並列で実行

Azure Data Factory にて Saleforce からデータの読み込みとAzure Data Factory にて Saleforce からデータの読み込みを 80 並列で実行したところ、エラーとなりました。

Failure happened on 'Source' side. ErrorCode=SalesforceHttpResponseNotSuccessCodeException,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The API request to Salesforce failed. Request Url: https://xxx.my.salesforce.com//services/data/v61.0/query/0r8xx3G81RNFPM8ASP-1000, Status Code: Forbidden, Error message: [{"message":"ConcurrentRequests (Concurrent API Requests) Limit exceeded.","errorCode":"REQUEST_LIMIT_EXCEEDED"}],Source=Microsoft.Connectors.Salesforce,'

Failure happened on 'Sink' side. ErrorCode=SalesforceHttpResponseNotSuccessCodeException,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The API request to Salesforce failed. Request Url: https://xxx.my.salesforce.com/services/data/v61.0/jobs/ingest/750IT00000dSex6YAC, Status Code: Forbidden, Error message: [{"message":"ConcurrentRequests (Concurrent API Requests) Limit exceeded.","errorCode":"REQUEST_LIMIT_EXCEEDED"}],Source=Microsoft.Connectors.Salesforce,'

image.png

image.png

image.png

image.png

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?