バッチ化xConnect操作
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
xConnectには個別に、またはバッチで処理を提出できます。バッチ処理によりクライアントが行うHTTP接続数が減り、クライアントはxConnectサービスへの呼び出しを最適化できます。
- バッチのサイズは client.SubmitAsync() / client.Submit() が呼び出されるポイントによって決まります。xConnect クライアントAPIはデフォルトを強制しません
- xConnectはトランザクション形式ではなく、バッチ内の操作は独立して失敗または成功し、1つの操作に失敗してもバッチはロールバックされません
- もしある操作が他の操作の成功に依存している場合、例えば面設定前に接触を追加することに成功した場合、全体の操作連鎖は失敗します
- 操作の順序は重要ではありません。client.AddContact()の前に client.SetFacet() を呼び出すことができます。
以下の例では、xConnectに1バッチで200 AddContactOperation操作と200 SetFacetOperation操作が送られます。
using Sitecore.XConnect; using Sitecore.XConnect.Client; using Sitecore.XConnect.Collection.Model;
namespace Documentation { public class AddContactsInBatch { // Async Example public async void ExampleAsync() { using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { for (int i = 1; i <= 200; i++) { // Adds an AddContactOperation operation to the batch var contact = new Sitecore.XConnect.Contact();
client.SetFacet
// Submits the batch, which contains 400 operations // 200 AddContactOperation // 200 SetFacetOperation await client.SubmitAsync();
} catch (Sitecore.XConnect.XdbExecutionException ex) { // Manage exception } } }
// Sync example public void ExampleSync() { using (Sitecore.XConnect.Client.XConnectClient client = Sitecore.XConnect.Client.Configuration.SitecoreXConnectClientConfiguration.GetClient()) { try { for (int i = 1; i <= 200; i++) { // Adds an AddContactOperation operation to the batch var contact = new Sitecore.XConnect.Contact();
client.SetFacet
// Submits the batch, which contains 400 operations // 200 AddContactOperation // 200 SetFacetOperation client.Submit();
} catch (Sitecore.XConnect.XdbExecutionException ex) { // Manage exception } } } } }
!注バッチ処理に依存するアプリケーションを構築する場合は、管理者がデフォルトのバッチサイズを設定・調整できる方法を提供することが推奨されます。