第37章 リモートタスクの実行


37.1. リモートタスクの実行

タスクまたはビジネスロジックを直接 JBoss Data Grid サーバーで実行すると、このロジックをデータの近くで実行でき、クラスターのノードすべてのリソースを使用します。これらのタスクは、サーバーインスタンスにデプロイされる Java 実行可能ファイルでバンドルでき、デプロイされるとタスクはプログラムから実行されます。

37.2. リモートタスクの作成

リモート実行のタスクを作成するには、org.infinispan.tasks.ServerTask を実装するクラスが含まれる .jar ファイルを作成する必要があります。このインターフェースには、実装する必要のある以下のメソッドが含まれます。

  • void setTaskContext(TaskContext taskContext): タスクコンテキストを設定します。必要なキャッシュや他のリソースへアクセスするために使用する必要があります。
  • String getName(): タスクに一意名を提供します。この名前は、TaskManager による実行に使用されます。

上記の他にも以下を実装することができますが、これらは実行には必要ありません。

  • TaskExecutionMethod getExecutionMode(): タスクが 1 つのノード (TaskExecutionMode.ONE_NODE) またはすべてのノード (TaskExecutionMode.ALL_NODES) で実行されるかを決定します。デフォルトでは、1 つのノードでの実行が有効になっています。
  • Optional<String> getAllowedRole(): このタスクを実行できるロールを設定します。デフォルトでは指定のロールはないため、実行に必要な追加のロールはありません。タスクの実行に関する詳細情報は リモートタスクの実行 を参照してください。
  • Set<String> getParameters() - タスクと使用する名前付きパラメーターのコレクション。

37.3. リモートタスクのインストール

リモートタスクが作成され、jar にバンドルされたら、以下のいずれかの方法でサーバーにデプロイできます。

オプション 1: デプロイメントディレクトリーの使用

  1. 以下の例のように、デプロイメントを JBoss Data Grid サーバーの deployments/ ディレクトリーにコピーします。

    $] cp /path/to/sample_task.jar $JDG_HOME/standalone/deployments/

オプション 2: CLI の使用

以下のコマンドを実行して JDG サーバーに接続します。

[$JDG_HOME] $ bin/cli.sh --connect --controller=$IP:$PORT
  1. 以下のコマンドを実行して .jar ファイルをデプロイします。

    deploy /path/to/sample_task.jar
注記

JBoss Data Grid がドメインモードで使用される場合、--all-server-groups または --server-groups パラメーターを使用してサーバーグループを指定する必要があります。

37.4. リモートタスクの削除

JBoss Data Grid の CLI を使用するとリモートタスクを実行中のインスタンスから削除することができます。以下の手順にしたがってリモートタスクを削除します。

  1. 以下のコマンドを実行して JDG サーバーに接続します。

    [$JDG_HOME] $ bin/cli.sh --connect --controller=$IP:$PORT
  2. 以下のように undeploy コマンドを使用して .jar ファイルを削除します。

    undeploy /path/to/sample_task.jar
    注記

    JBoss Data Grid がドメインモードで使用される場合、--all-relevant-server-groups または --server-groups パラメーターを使用してサーバーグループを指定する必要があります。

37.5. リモートタスクの実行

サーバー側で承認が無効になっている場合、リモートタスクがインストールされると誰でも実行することができます。その他の場合では、EXEC パーミッションを持つユーザーのみがインストール済みのタスクを実行することができます。getAllowedRole メソッド経由で、リモートタスクに追加のユーザーが指定されている場合、ユーザーがスクリプトを実行するにはこのロールに属する必要があります。

デプロイ済みのタスクを実行するには、希望のキャッシュで execute(String taskName, Map parameters) を呼び出します。以下の例は、sampleTask という名前のタスクを実行します。

import org.infinispan.client.hotrod.*;
import java.util.*;
[...]
String TASK_NAME = "sampleTask";

RemoteCacheManager rcm = new RemoteCacheManager();
RemoteCache remoteCache = rcm.getCache();

// Assume the task takes a single parameter, and will return a result
Map<String, String> params = new HashMap<>();
params.put("name", "value");

String result = (String) remoteCache.execute(TASK_NAME, params);
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.