エージェントを作成する
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
BaseAgentまたはRecurringAgentを継承するエージェントを作成でき、そのエージェントがスケールするかどうかを選択できます。カスタムエージェントを作成する理由には以下があります:
- エンジン内で定期的にメンテナンスを行い、例えばエンジンが依存するデータベースから期限切れデータを消去します。デフォルトでは、処理エンジンには保守タスクを実行する2つのエージェントが含まれています。
!注カスタムエージェントを作成する必要は稀です。むしろ、デフォルトのTaskAgentで実行されるカスタムプロセッシングワーカーを作成する可能性が高いです。
RecurringAgentを継承するエージェントを作成する
以下のサンプルエージェントは、偽のストレージプロバイダー内のデータをクリーンアップするメソッドを呼び出します。ストレージプロバイダーはICustomProviderインターフェースで表現されます。エージェントはRecurringAgentを継承し、これは規則的かつ設定可能な間隔で実行されることを意味します。
エージェントクラスを作成する
エージェントクラスを作成するには:
- クラスを作成し、以下のサンプルエージェントをコピーします。
!注サンプルICustomProviderとCustomProviderクラスは利便性のため同じファイルに含まれています。
using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Sitecore.Framework.Conditions; using Sitecore.Processing.Engine.Abstractions; using Sitecore.Processing.Engine.Agents;
namespace Sitecore.Documentation.Examples { ///
///
_customProvider = customProvider; }
///
///
///
///
設定中のレジスタエージェントとサービス
- scという名前のファイルを作成します。Processing.Engine.CustomAgents.xml \\App_Data\\Config\\Globalに。
- レジスタは SampleCleanupAgent と ICustomProvider を示します。この例では、単一のエージェントを登録するためのシンプルな設定を用いています。
あるいは、エージェントがスケールする必要がある場合は、ParallelAgentsConfigurationを使って登録してください:
BaseAgentを継承するエージェントを作成します
以下のサンプルエージェントは起動時にログにメッセージを書き込み、1ミリ秒待ちます。エージェントは継承RecurringAgentせず、定期的に実行されません。
!重要このエージェントはエンジン起動時に一度だけ実行されます。しかし、エージェントは特定のイベントが発生するまでスリープし、その後そのイベントが再び起こるまでスリープすることがあります。エージェントは技術的には「再発」しますが、定期的なスケジュールされた間隔ではありません。
エージェントクラスを作成する
エージェントクラスを作成するには:
-
クラスを作成し、以下のサンプルエージェントをコピーします。
using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Logging; using Sitecore.Processing.Engine.Abstractions; using Sitecore.Processing.Engine.Agents;
namespace Sitecore.Documentation.Examples { ///
/// Provides basic agent functionality and services. /// public class SampleLogAgent : BaseAgent { ////// /// /// /// protected SampleLogAgent(ILoggerlogger, IConfiguration options) : base(logger, options) { } ///
/// /// /// ///public override async Task ExecuteAsync(CancellationToken token) { // Write a custom log message // No cancellation token check in this example as task is unlikely to be long-running base.Log.LogInformation("Your custom agent has started."); await Task.Delay(1).ConfigureAwait(false); } } }
設定中のレジスタエージェント
-
scという名前のファイルを作成します。Processing.Engine.CustomAgents.xml \\App_Data\\Config\\Globalに。
-
レジスタSampleCleanupAgent示す通り。この例では、単一エージェントを登録するためのシンプルな構成を用いています。
Sitecore.Documentation.Examples.SampleLogAgent, Sitecore.Documentation.Examples Sitecore.Processing.Engine.Abstractions.IAgent, Sitecore.Processing.Engine.Abstractions Transient
タスクキャンセル
長期的なタスクにつながる可能性のあるエージェントを実装する場合は、token.IsCancellationRequestedExecuteAsync方法(BaseAgent相続エージェントの場合)またはRecurringExecuteAsyncメソッド(エージェントがRecurringAgentを継承する場合)でプロパティを確認するようにしてください。