无法在Spring Cloud Data Flow Pivotal Cloud Foundry上启动任务

时间:2017-01-27 15:30:51

标签: spring-cloud-dataflow

系统信息

Spring Cloud数据流Cloud Foundry:v1.1.0.RELEASE Pivotal Cloud Foundry:v1.7.12 CF客户端(Windows):cf.exe版本6.23.1 + a70deb3.2017-01-13 cf-v3-plugin:0.6.7

启动没有参数的时间戳任务应用程序失败。 Spring Cloud Data Flow Server的日志在https://gist.github.com/anonymous/420f3928b7831a11b378fc6792be1ffc显示以下堆栈跟踪。

运行cf v3-apps输出

name          total_desired_instances
ticktock-ts   0

然后cf v3-rt ticktock-ts start now生成

OK

Running task start on app ticktock-ts...

Tailing logs for app ticktock-ts...

Failed to run task start:
{   "code": 330002,   "description": "Feature Disabled: task_creation",   "error_code": "CF-FeatureDisabled"}

此task_creation功能已禁用,我的PCF管理员表示无法在我们拥有的PCF版本上启用它。

谢谢。

2 个答案:

答案 0 :(得分:0)

任务被认为是“实验性的”。在PCF之前1.9.x.我看到你正在运行vci-cli插件,所以你必须知道这一点。尝试使用允许实验任务在旧版PCF中运行的变量设置SCDF:

cf set-env foundry-server SPRING_CLOUD_DATAFLOW_FEATURES_EXPERIMENTAL_TASKSENABLED true

另外,我收到了与SCDF版本的1.1.0版本以及1.2.0-build-snapshot(我能找到的最新版本)相同的错误。我注意到错误仅在重复启动尝试后才出现。通过取消注册和销毁任务并重新开始,我只会在多次尝试后得到该错误。

答案 1 :(得分:0)

我们也为我们的1.5版本的PCF安装完成了它。

以下是我们在峰值期间所做的笔记和学习尝试。我希望它有所帮助。

Spring Cloud Task允许用户使用Spring Cloud开发和运行短期微服务,并在云中本地运行,甚至在Spring Cloud Data Flow上运行。 我们使用示例Spring Cloud应用程序:thumbnail-generator作为我们用例的短期微服务。

有关Spring Cloud Task的详细参考指南位于spring docs

  

请注意,我们已经使用了Rabbit Binder,为了工作,在PCF Space中创建了一个RabbitMq实例,并使用下面解释的变量绑定到app。

步骤和命令

  • 在本地专家中开发和安装任务应用 - mvn clean install

  • 设置Maven远程仓库,如果要使用私有仓库进行其他依赖性下载: export MAVEN_REMOTE_REPOSITORIES_REPO1_URL=YOUR_NEXUS_URL

  • 设置Cloud Foundry目的地: export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_URL=PCF API Endpoint export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_ORG=Org Name export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SPACE=Space Name export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DOMAIN=Site domain export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_USERNAME=user name export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_PASSWORD=password export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SKIP_SSL_VALIDATION=true export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_STAGING_TIMEOUT=300s export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_STARTUP_TIMEOUT=300s 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_STREAM_ENABLE_RANDOM_APP_NAME_PREFIX=false export SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_SERVICES=myMessageStream_rabbitmq_server

      

    SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_SERVICES可以用逗号分隔   我们想要与流应用程序绑定的服务实例列表。   SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_TASK_SERVICES用于列出所需的服务   被绑定到任务应用程序

  • 启动数据流服务器 -

    • 如果在本地运行Stream应用程序:

      1. 构建Dataflow Server Local
        • mvn clean package
      2. 启动DF服务器本地 - mvn spring-boot:run
    • 如果在PCF上运行Stream应用程序:

      1. 构建Dataflow Server CF
        • mvn clean package
      2. 启动DF服务器CF(如果不需要,请跳过java opts) - java -Djavax.net.ssl.trustStore=./keystore.jks -Djavax.net.ssl.trustStorePassword=password -jar target/spring-cloud-dataflow-server-cloudfoundry-1.1.0.BUILD-SNAPSHOT.jar
  • 构建数据流Shell - mvn clean package

  • 启动DF Shell - mvn spring-boot:run

  • 导入开箱即用的应用 - app import --uri use_the_bitly_url_for_stream-applications-rabbit-maven

      

    要从本地文件系统导入自定义列表,请使用Uri作为文件   系统:--uri=file://<full path to the jar file on local system>

  • 注册应用 -

    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
  • 创建&amp;部署流 -

    1. 在本地: stream create myMessageStream --definition "rabbit --rabbit.queues=cloud-stream-source --rabbit.requeue=true --spring.rabbitmq.host=localhost --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

    2. 在PCF上: stream create myMessageStream --definition "rabbit --rabbit.queues=cloud-stream-source --rabbit.requeue=true --spring.rabbitmq.host=${vcap.services.p-rabbitmq.credentials.protocols.amqp.host} --spring.rabbitmq.port=${vcap.services.p-rabbitmq.credentials.protocols.amqp.port} --spring.cloud.stream.bindings.output.contentType='text/plain' | task-processor --uri=maven://com.example:thumbnail-generator:0.0.1-SNAPSHOT | task-launcher-local" --deploy

如果成功部署到PCF,您可以找到3个正在运行的应用程序即。 CF上的兔子监听器,任务处理器和任务启动器,以启用事件驱动的架构微服务。

  

要将IBM MQ作为源,流定义将是

... --definition "jms --jms.destination=<value>
--spring.jms.jndi-name=<value> --spring.cloud.stream.bindings.output.contentType='text/plain' ...

如上所述,所有上述操作也可以使用Dataflow Server仪表板完成。

我希望它有所帮助。