我有一个Spring Cloud Data Flow (SCDF)
服务器在Kubernetes cluster
上运行,其中Kafka
作为消息代理。现在,我尝试启动一个写入Spring Cloud Task (SCT)
中某个主题的Kafka
。我希望SCT使用与Kafka
相同的SCDF
。这提出了两个我希望得到的问题:
- 如何配置SCT以使用与SCDF相同的Kafka?
- 是否可以配置SCT,以便Kafka服务器uri在启动时可以自动传递到SCT,类似于 在启动时传递给SCT的数据源属性?
由于我找不到如何实现此目标的示例,因此非常感谢您的帮助。
修改:我自己的答案
这就是我如何使其适用于我的情况的方式。我的SCT要求提供spring.kafka.bootstrap-servers
。在SCDF的外壳中,我将其作为参数--spring.kafka.bootstrap-servers=${KAFKA_SERVICE_HOST}:${KAFKA_SERVICE_PORT}
提供,其中KAFKA_SERVICE_HOST
和KAFKA_SERVICE_PORT
是由SCDF的k8s设置脚本创建的环境变量。
这是在SCDF的外壳中启动任务的方法
dataflow:>task launch --name sample-task --arguments "--spring.kafka.bootstrap-servers=${KAFKA_SERVICE_HOST}:${KAFKA_SERVICE_PORT}"
答案 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时自动传播它们。请记住,这些属性将提供给所有任务启动。