---
title: "タスクマネージャー"
slug: "task-manager"
abstract: "タスクマネージャーの役割の概要と、コアロールの文脈および処理エンジンの文脈での使用方法。"
---
# タスクマネージャー

タスクマネージャーは、Cortex処理エンジン(Processing Engine)でエージェントが取得するタスクを登録する責任を負います。デフォルトでは、ITaskManagerには2つの実装があります:

-   Sitecore.Processing.Tasks.Messaging.TaskManager Content Management Roleのようなクライアントが、メッセージバスを通じて処理タスクを登録するために使用します。この実装はタスクマネージャープロキシとも呼ばれます。
-   Sitecore.Processing.Engine.TaskManager 処理エンジン内で、入力される処理タスクを処理エンジンタスクデータベースに登録するために使用されます。

> !注タスクのスケジュールには必ずタスクマネージャーのプロキシを使うべきです。メッセージングAPIを直接使わないでください。

以下の例は、Content Managementロールから単一の分散タスクを登録するためのデータフローを示しています。

-   サービスロケーターを使ってITaskManagerのインスタンスを取得してください:
    
    var taskManager = ServiceLocator.ServiceProvider.GetService<ITaskManager>();
    

## コアロールの文脈でのTaskManagerの使用

Content Managementのようなコア役割の文脈では、サービスロケーターを使ってタスクマネージャーを取得します:

var taskManager = ServiceLocator.ServiceProvider.GetService<ITaskManager>();
## 処理エンジンの文脈におけるタスクマネージャーの使用

処理エンジンの文脈では、コンストラクタ注入を使ってタスクマネージャーのインスタンスを取得します。以下の例は、カスタムメッセージハンドラにITaskManagerが注入されるインスタンスを示しています。

using System;
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Sitecore.Framework.Conditions;
using Sitecore.Framework.Messaging;
using Sitecore.Processing.Engine.Abstractions;
using Sitecore.Processing.Engine.Abstractions.Messages;

namespace Sitecore.Documentation.Sample
{
 public abstract class CustomTaskHandler<TRegisterTask> : IMessageHandler<TRegisterTask>
 where TRegisterTask : RegisterTask
 {
 protected CustomTaskHandler(ITaskManager taskManager)
 {
 Condition.Requires(taskManager, nameof(taskManager)).IsNotNull();

 TaskManager = taskManager;
 }
}