2017-06-07 6 views
0

以下のSpringクラウドストリームを実行して、rabbitmqからメッセージを受け取り、タスクラウンチ要求に変換し、Task-laucher-localを使用してタスクをトリガーします。これは完全に正常に動作します。カスタムパラメータでSpring CLoudストリームを使用してSpringタスクを起動する方法

ストリームは、タスク・ストリームを-1作成--definition「ソース:ウサギ --rabbit.queues = AspWorkflow --spring.rabbitmq.username = RabbitAdmin --spring.rabbitmq.password =管理者--spring。スクリプトを実行するには、次のコマンドを実行します。rabbitmq.host = localhost --spring.rabbitmq.port = 5672 | tasklaunchrequest-transform --uri = maven://com.workflows.task:CloudTaskJavaExec:1.0-SNAPSHOT --command-line-arguments = ' - executablePath = D:¥Documents¥Official¥Platform-X¥Execs¥SimpleJavaProgram-1.0-SNAPSHOT.jar ' --spring.rabbitmq.username = RabbitAdmin --spring.rabbitmq.password = admin --spring.rabbitmq.host = localhost - -spring.rabbitmq.port = 5672 |タスクランチャーローカル--rabbit.queues = AspWorkflow --spring.rabbitmq.username = RabbitAdmin --spring.rabbitmq.password = admin --spring.rabbitmq.host = localhost - spring.rabbitmq.port = 5672 "ストリーム配信task-stream-1 --properties "app.source.rabbit.spring.cloud.stream.bindings.output.binder = rabbit、app.tasklaunchrequest-transform.spring.cloud.stream.bindings.input.binder =ウサギ、アプリ.tasklaunchrequest-transform.spring.cloud.stream.bindings.output.binder =ウサギ、app.task発射-local.spring.cloud.stream.bindings.input.binder =ウサギ」

しかし、その代わりにデプロイ時にUriとコマンドラインの引数を直接渡しているので、着信メッセージからそれらを取り出し、要求を出したいと思っています。

私はTaskLaunchRequestを作成し、シンクの入力キューに供給しましたが、実行時パラメータ渡しで必要な動作を達成できません。

マイサンプルTaskLaunchRequestは、この問題を解決するために助けてください

{ 
    "uri": "maven://com.workflows.task:CloudTaskJavaExec:1.0-SNAPSHOT", 
    "commandlineArguments": [ 
    "--executablePath=D:\\Documentsts\\Official\\Platform-X\\Execs\\SimpleJavaProgram-1.0-SNAPSHOT.jar" 
    ], 
    "environmentProperties": { 

    }, 
    "deploymentProperties": { 

    } 
} 

以下のように見えます。

答えて

0

私はあなたがタスクランチャーを使用してタスクを開始するための別のオプションがTaskLaunchRequestへのメッセージペイロードを変換するためにTasklaunchrequest-変換プロセッサを使用してストリームを作成することですTaskLaunchRequest-変換

を使うべきだと思います。

あなたはTasklaunchrequestTransformProcessorConfigurationと同様に、独自のプロセッサを実装し、代わりに渡される性質のメッセージからtasklaunchrequestためのコマンドライン引数を設定する必要があります。

サンプルコード(ない完全なコード)

@Transformer(inputChannel = Processor.INPUT, outputChannel = Processor.OUTPUT) 
public Object setupRequest(Object message) { 
    Map<String, String> properties = new HashMap<String, String>(); 
    Map<String, String> deploymentProperties = null; 
    List<String> commandLineArgs = null; 
    ... 
    ... 
    commandLineArgs = **<parse your message and get the commandline args>** 

    TaskLaunchRequest request = new TaskLaunchRequest(
      processorProperties.getUri(), 
      commandLineArgs, 
      properties, 
      deploymentProperties, 
      null); 

    return request; 
} 

TasklaunchrequestTransformProcessorConfigurationの元のソースコードのためのgithubのリンクの下に参照してください。

https://github.com/spring-cloud-stream-app-starters/tasklaunchrequest-transform/blob/master/spring-cloud-starter-stream-processor-tasklaunchrequest-transform/src/main/java/org/springframework/cloud/stream/app/tasklaunchrequest/transform/processor/TasklaunchrequestTransformProcessorConfiguration.java

これが役立ちます。

+1

これは理論的に質問に答えるかもしれませんが、ここで答えの本質的な部分を含め、参照のためのリンクを提供することが望ましいです(// meta.stackoverflow.com/q/8259)。 – GhostCat

+0

確かに、申し訳ありませんが、私はプロセッサのソースコード用のgithubリンクを提供すれば十分だと思っていました。とにかく、https:// githubに似た独自のプロセッサを実装することができます。/ src/main/java/org/springframework/cloud/stream/app/start/start/start/start/start/tasklaunchrequest /トランスフォーム/プロセッサ/ TasklaunchrequestTransformProcessorConfiguration.java。 – gvk

関連する問題