0

タスク アプリを Spring Cloud Data Flow に登録し、その定義を作成しましたが、ステータスが「不明」と表示されます。ストリームを作成し、タスク シンクからタスクを起動しようとすると、エラーが発生します。

java.lang.IllegalStateException: failed to resolve MavenResource:

タスクシンクからタスクを起動するには? 何か不足していますか?どんな助けでも大歓迎です。もう 1 つの質問は、自分のタスクで TaskLaunchRequest を介して送信されたペイロードにアクセスする方法です。S1 http | step1: トランスウサギ | ログ S2 :S1.step1 > フィルター --expression=payload.contains('CUSTADDRMODRQ_V15') | タスクプロセッサ | タスクシンク

task-sink は、TaskLaunchRequest の uri によって提供されたタスクを起動しています。ログに示されているようにリソースを探しています OUT /home/vcap/.m2/repository に優先度 10.0 のマネージャー EnhancedLocalRepositoryManager を使用します https://repo.spring.io/libs-snapshotに優先度 5.0 のトランスポーター HttpTransporter を使用しますついに失敗。

タスクはリポジトリにデプロイされ、前述のように、その定義も登録して作成しました。

これはcf環境にあり、SCDFサーバー1.0.0.M4を使用しています。task-sink の application.properties で、maven.remote.repositories.snapshots.url=** を提供しています

task create fis-ifx-event-task --definition "fis-event-task"

私の目標は、ストリームからタスクを起動することです。

情報のおかげで。1.0.0M4 バージョンではタスクを有効にできないため、実際には BUILD-SNAPSHOT を使用しています。これは、私が spring-cloud-dataflow-server-cloudfoundry-1.0.0.BUILD-20160808.144306-116 を使用しているものです。タスク定義を登録および作成できます。チームから提供されたサンプル タスク モジュールを使用している場合でも、タスク定義のステータスが「不明」と表示されます。しかし、ストリームのフローを開始し、タスク シンクがタスクを起動しようとすると、Maven リソースが見つかりません。タスク定義を作成すると、タスク モジュールはデプロイされますか? Pivotal Apps Manager にアプリが表示されません。前述のように、タスク シンク アプリケーションの application.properties ファイルに maven.remote.repositories.snapshot.url を指定しました。私が観察したもう 1 つのことは、データフロー シェルから手動でタスクを起動すると、CF-UnprocessableEntity(10008): The request is semanically invalid: Unknown field(s): 'staging_disk_in_mb', 'staging_memory_in_mb' というエラーが表示されることです。ソースが空です。現在、タスクはタイムスタンプを出力することになっており、入力に依存していません。

TaskProcessor code:
@EnableBinding(Processor.class)
@EnableConfigurationProperties(TaskProcessorProperties.class)
public class TaskProcessor {

    @Autowired
    private TaskProcessorProperties processorProperties;

    public TaskProcessor() {
    }

    @Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT)
    @ELI(level = "info", eventType = ELIEventType.INBOUND)
    public Object setupRequest(String message) {
        Map<String, String> properties = new HashMap<String, String>();
        properties.put("payload", message);
        TaskLaunchRequest request = new TaskLaunchRequest(processorProperties.getUri(), null, properties, null);
        return new GenericMessage<>(request);
    }
}
TaskSink code:
@SpringBootApplication
@EnableTaskLauncher
@EnableBinding(Sink.class)
@EnableConfigurationProperties(TaskSinkProperties.class)
public class FisIfxEventTaskSinkApplication {

    public static void main(String[] args) {
        SpringApplication.run(FisIfxEventTaskSinkApplication.class, args);
    }
}

投稿の前半で使用しているストリームを提供しました。ここでわかるように、シンクは uri とペイロードを含む TaskLaunchRequest を受信して​​おり、タスクを起動できません。

OUT registering [40, java.io.File] with serializer org.springframework.integration.codec.kryo.FileSerializer
2016-08-10T16:08:55.02-0600 [APP/0]      
OUT Launching Task for the following resource TaskLaunchRequest{uri='maven://com.xxx:fis.ifx.event-task:jar:1.0-SNAPSHOT', commandlineArguments=[], environmentProperties={payload={"statusCode":0,"fisT
opic":"CustomerDataUpdated","payloadId":"CUSTADDRMODR``Q_V15","customerIds":[1597304]}}, deploymentProperties={}}
4

2 に答える 2

2

始める前に、いくつか質問があります。将来的には、他のユーザーが見つけやすく、回答しやすいように、複数の質問に分割することをお勧めします。そうは言っても:

物事の現状に関するちょっとした背景
物事がどのように機能するかを理解するためには、物事の現状を理解することが重要です。関連するソフトウェアの現在のリリースは次のとおりです。

  • Pivotal Cloud Foundry (PCF) - 1.7.12。このバージョンは、タスクのサポートに必要です。
  • スプリング クラウド タスク (SCT) - 1.0.2.RELEASE
  • Spring Cloud Data Flow CF (SCDF) - 1.0.0.BUILD-SNAPSHOT (この記事の日付現在)。

現在、PCF 1.7.12+ には、タスクを実行するためのすべての機能があります。v3 アプリケーション (タスクの起動に使用されるアプリケーションのタイプ) を作成したり、タスクとして実行したりできます。ただし、その機能に関するツールは現在完全ではありません。Apps Manager または CLI では、v3 アプリケーションはサポートされていません。一部の機能を支援するために使用できる開発ツールのような CLI 用のプラグインがありますが (ログなどを表示します)、完全に機能するわけではなく、動作させるには特定のバージョンの CLI が必要です [ 1]。これは、PCF 内のタスク機能がまだ実験的であると見なされている理由の 1 つです。

Spring Cloud Task は現在 GA であり、CF でタスクを効果的に実行するために必要なすべての機能をサポートしています。ただし、SCT はオーケストレーションを処理しないため、CF でのタスクの実際の起動は、ユーザーまたは Spring Cloud Data Flow (簡単なルート) の責任であることに注意することが重要です。

Spring Cloud Data Flow の Cloud Foundry サーバー実装には現在、最新のスナップショットで PCF でタスクを起動する機能があります。これは、1.7.12 および 1.8 の開発ブランチに対して検証されています。

SCDF
タスク内のタスク ワークフローは、SCDF のコンテキスト内のストリーム アプリケーションとは根本的に異なります。ストリーム定義を作成すると、そのオプションが与えられますdeploy。これが行うことは、Spring Boot über jar を実際にダウンロードし、長時間実行されるプロセスとして PCF にデプロイすることです。それらがダウンした場合、PCF は期待どおりにそれらを再起動します。

一方、タスクはそうではありませんdeployed。それらが起動されます。違いは、タスク定義の作成中は、起動をクリックするまで何も展開されないことです。タスクが完了すると、ソフトウェアはシャットダウンされ、クリーンアップされます。したがって、ストリーム定義には状態がある場合がありますが、実際には、定義と展開されたソフトウェアの間の 1 対 1 の関係です。タスクを使用すると、タスク定義を何度でも起動できます。

あなたの問題
あなたの投稿を読んで、あなたが苦労していることがいくつかわかります。私がお手伝いできるかどうか見てみましょう:

  • SCDF 内のタスク定義とストリーム経由での起動 -ストリームからタスクを起動する場合、SCDF 内のタスク レジストリは使用されません。シンクは、リソースの URL がTaskLauchRequest.
  • Apps Manager とタスク -前述のように、Apps Manager ではまだ v3 アプリケーションがサポートされていないため、そこでタスクを表示することはできません。
  • ログの表示 - CF でのタスクの起動で何が問題になっているのかをデバッグするには、ログを表示する必要があります。これを行うには、上記の v3 CLI プラグインを使用してそれらを表示します。プラグインではライブ ログのみを追跡でき、以前にレンダリングされたログを表示できないことに注意することが重要です。そのため、テストするときは、アプリが作成されたらすぐに、起動する前にログを追跡する必要があります。
  • SCDF シェルのエラー- SCDF シェル ( CF-UnprocessableEntity(10008):...) から受け取ったエラーは、正しいバージョンの PCF (1.7.12+) と次の他のライブラリの正しいバージョンの両方を持っているかどうか疑問に思います。
    • spring-cloud-deployer-cloudfoundry- 最新のスナップショット
    • cf-java-client- 2.0.0.M10+
    • reactor-core- 3.0.0.RC1+

これが役立つことを願っています!

[1] https://github.com/cloudfoundry/v3-cli-plugin

于 2016-08-11T17:23:28.697 に答える
0

タスク サポートは、SCDF の CF サーバーの 1.0.0.M4 リリースでは利用できません。このリリースでは、タスク コマンド/REST-API を無効にする必要があります。こちらを参照してください。そのため、1.0.0.M4リファレンス ガイドには、タスクに関連するドキュメントはありません。

つまり、BUILD-SNAPSHOT リリースでは Task サポートが利用可能/有効になっています。CF サーバーをローカルで構築し、それを CF にプッシュする場合は、シェルのタスク コマンドを利用して、タスク定義を作成および起動できます。

于 2016-08-11T13:39:29.920 に答える