我正在使用Spring Cloud数据流,尝试使用Kafka压缩主题从数据库中复制数据。因此,在将记录生成到主题(称为foo)时,需要设置记录的键。
kafka-topics --zookeeper localhost:2181 --create --topic foo --replication-factor=1 --partitions 3 --config cleanup.policy=compact
stream create --name foo --deploy --definition "jdbc --spring.datasource.url=jdbc:postgresql://localhost:5432/chiodonia --spring.datasource.driver-class-name=org.postgresql.Driver --jdbc.max-rows-per-poll=10 --jdbc.query='select id, value from foo where seen is null' --jdbc.split=true --jdbc.update='update foo set seen=current_timestamp where id in (:id)' --trigger.fixed-delay=5 --trigger.time-unit=SECONDS | header-enricher --headers='recordkey=payload.id' > :foo --spring.cloud.stream.kafka.bindings.output.producer.messageKeyExpression=headers['recordkey']"
任何人都可以使用Spring Cloud Dataflow将记录的密钥设置为kafka吗?
答案 0 :(得分:0)
要覆盖输出通道的绑定配置,您必须将其设置为从header-enricher
处理器到foo
主题向外的通道。
那是:
stream create --name foo --deploy --definition“ jdbc ...... | header-enricher --headers ='recordkey = payload.id'--spring.cloud.stream.kafka.bindings。 output.producer.messageKeyExpression = headers ['recordkey']>:foo“