0

このユース ケースでは、メッセージ ストリーム アプリケーションを作成し、プライベート Cloud Foundry 環境にデプロイする必要があります。ストリーム アプリケーションは、ストリームで定義されているように、RabbitMq キューをリッスンし、タスクをトリガーすることを目的としています。

同じことを実現するために、cloud-dataflow-server-cloudfoundryMac でローカルに実行して使用します。

以下は、それを達成するために使用されるコマンドのセットです:-

  • Maven リモート リポジトリを設定する export MAVEN_REMOTE_REPOSITORIES_REPO1_URL=https://ftl.abc.com/NEXUS
  • Cloud Foundry 宛先のセットアップ -

    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_URL=https://api.paas.abc-intl.com/
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_ORG=Paas-Apps
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SPACE=DEV
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DOMAIN=paas.abc-intl.com
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_USERNAME=abc@xyz.com
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_PASSWORD=password
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SKIP_SSL_VALIDATION=true
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_SERVICES=rabbitmq_server
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_BUILDPACK=java_buildpack_offline
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_MEMORY=512
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_TASK_MEMORY=512
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_URL=https://api.paas.abc-intl.com/
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_ORG=Paas-Apps
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SPACE=DEV
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DOMAIN=paas.abc-intl.com
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_USERNAME=abc@xyz.com
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_PASSWORD=password
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SKIP_SSL_VALIDATION=true
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_SERVICES=rabbitmq_server
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_BUILDPACK=java_buildpack_offline
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_MEMORY=512
    export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_TASK_MEMORY=512
    
  • Dataflow サーバーの起動 -

    1. Spring Cloud プロパティを使用してDataflow Server CFを次のようにビルドします。

      • spring.name=データフロー
      • spring.cloud.config.uri= http://localhost:8888
      • spring.cloud.dataflow.features.tasksEnabled=true
      • spring.cloud.dataflow.features.streamsEnabled=true
      • spring.cloud.deployer.cloudfoundry.task.taskTimeout=360
    2. DF サーバー CF をローカルで開始します -java -Djavax.net.ssl.trustStore=/Users/apache-maven-3.3.9/conf/keystore.jks -Djavax.net.ssl.trustStorePassword=password -jar spring-cloud-dataflow-server-cloudfoundry-1.1.0.BUILD-SNAPSHOT.jar

  • DFシェルを起動
  • スターター アプリのインポート -stream-applications-rabbit-maven
  • アプリを登録する -
    1. app register --name task-processor --type processor --uri maven://org.springframework.cloud.stream.app:tasklaunchrequest-transform-processor-rabbit:jar:1.1.0.BUILD-SNAPSHOT
    2. app register --name task-launcher-local --type sink --uri maven://org.springframework.cloud.stream.app:task-launcher-local-sink-rabbit:jar:1.0.4.RELEASE
  • ストリームの作成と展開 - stream create myMessageStream --definition "rabbit --rabbit.queues=cloud-stream-source --rabbit.requeue=true --spring.rabbitmq.host=host.abc.com --spring.rabbitmq.port=5672 --spring.cloud.stream.bindings.output.contentType='text/plain' | task-processor --uri=maven://com.example:thumbnail-generator:0.0.1-SNAPSHOT | task-launcher-local" --deploy

ただし、デプロイはTimeoutExceptionで失敗しますが、Dataflow サーバー ログまたはアプリケーションのログに明確な理由はありません。

Cloud Foundry スペースで作成されたアプリケーションは、すべてCF コンソールでStoppedと表示されます。

これは私に無知を残しました。考えられる根本原因を理解するために、これについていくつか質問があります。

  1. Stream の展開が成功した場合、Stream によって CF に展開されたアプリケーションのステータスはどうなりますか? これらは開始済みまたは停止済みとして表示されますか?
  2. デプロイされたアプリケーションの名前には、dataflow-nonvaluable-overapprehension-myMessageStream-rabbit などのランダムな単語がいくつか埋め込まれています。私の理解では、これは Dataflow Server インスタンスに付けられた名前であり、参照を作成するために挿入されています。この名前をカスタマイズする方法はありますか? これにより、事前にアプリケーションの名前を知ることができ、それらのログを追跡することができます。

任意の考え/助けをいただければ幸いです。

4

1 に答える 1

1

Stream の展開が成功した場合、Stream によって CF に展開されたアプリケーションのステータスはどうなりますか? これらは開始済みまたは停止済みとして表示されますか?

stream listコマンドはステータスを表示します。ストリームの展開が成功した場合、ステータスは になりますdeployed

デプロイされたアプリケーションの名前には、dataflow-nonvaluable-overapprehension-myMessageStream-rabbit などのランダムな単語がいくつか埋め込まれています。私の理解では、これは Dataflow Server インスタンスに付けられた名前であり、参照を作成するために挿入されています。この名前をカスタマイズする方法はありますか? これにより、事前にアプリケーションの名前を知ることができ、それらのログを追跡することができます。

次のようにしてこのプロパティを無効にすることで、アプリ名のランダムな名前の生成をオーバーライドできます。 export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_ENABLE_RANDOM_APP_NAME_PREFIX=false

特定の を設定する deployer プロパティを使用して、アプリ名を制御できますprefix

export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_APP_NAME_PREFIX=myprefix

デプロイヤーのプロパティSPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_STAGING_TIMEOUTを増やしてみてSPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_STARTUP_TIMEOUT、アプリのステージング/起動にもう少し時間が必要かどうかを確認できます。

于 2016-11-10T09:22:41.613 に答える