将Spring Cloud Task配置为使用Spring Cloud Data Flow服务器的Kafa

时间:2019-02-27 12:45:21

标签: spring-cloud-dataflow spring-cloud-task

我有一个Spring Cloud Data Flow (SCDF)服务器在Kubernetes cluster上运行,其中Kafka作为消息代理。现在,我尝试启动一个写入Spring Cloud Task (SCT)中某个主题的Kafka。我希望SCT使用与Kafka相同的SCDF。这提出了两个我希望得到的问题:

  
      
  1. 如何配置SCT以使用与SCDF相同的Kafka?
  2.   
  3. 是否可以配置SCT,以便Kafka服务器uri在启动时可以自动传递到SCT,类似于   在启动时传递给SCT的数据源属性?
  4.   

由于我找不到如何实现此目标的示例,因此非常感谢您的帮助。

修改:我自己的答案

这就是我如何使其适用于我的情况的方式。我的SCT要求提供spring.kafka.bootstrap-servers。在SCDF的外壳中,我将其作为参数--spring.kafka.bootstrap-servers=${KAFKA_SERVICE_HOST}:${KAFKA_SERVICE_PORT}提供,其中KAFKA_SERVICE_HOSTKAFKA_SERVICE_PORT是由SCDF的k8s设置脚本创建的环境变量。

这是在SCDF的外壳中启动任务的方法

dataflow:>task launch --name sample-task --arguments "--spring.kafka.bootstrap-servers=${KAFKA_SERVICE_HOST}:${KAFKA_SERVICE_PORT}"

1 个答案:

答案 0 :(得分:0)

您可能需要查看参考指南中的Spring Cloud Task Events部分。

期望您会选择所需的资料夹并将该库打包到Task应用程序的类路径中。有了这种依赖性,您便可以使用Spring Cloud Stream的spring.cloud.stream.kafka.binder.brokers(例如const webpack = require("webpack"); const MiniCssExtractPlugin = require("mini-css-extract-plugin"); module.exports = { entry: './src/index.js', module: { rules: [ { test: /\.(js|jsx)$/, exclude: /node_modules/, use: ["babel-loader"] }, { test: /\.scss$/, use: [{ loader: "style-loader" }, { loader: "css-loader" }, { loader: "sass-loader" }] }, { test: /\.css$/, use: [MiniCssExtractPlugin.loader, "css-loader"] }, { test: /\.(pdf|jpg|png|gif|svg|ico)$/, use: [ { loader: "url-loader" } ] } ] }, resolve: { extensions: ["*", ".js", ".jsx"] }, output: { path: __dirname + '/dist', publicPath: '/', filename: 'bundle.[hash].js' }, plugins: [ new MiniCssExtractPlugin({ filename: "[name].css", chunkFilename: "[id].css" }) ], watch:true, }; )和与连接到现有Kafka集群有关的其他资源来配置应用程序。

使用这些配置启动Task应用程序(从SCDF启动)后,您就可以在Task应用程序中发布或接收事件。

或者,使用Task应用程序的类路径中的Kafka-binder,可以为SCDF通过全局配置启动的所有Task定义Kafka活页夹属性。请参阅参考资料中的Kafka binder properties。指南以获取更多信息。在此模型中,您不必显式配置每个具有Kafka属性的Task应用程序,而是由SCDF在启动Tasks时自动传播它们。请记住,这些属性将提供给所有任务启动。