【问题标题】:Kafka connector insert transform string into propertyKafka连接器将转换字符串插入属性
【发布时间】:2021-10-16 02:59:38
【问题描述】:

我正在使用Kafa connect solr,我正在尝试找到一种方法来根据传入的主题更改 solr url,我一直在查看 Kafka connect_transforms 来尝试实现这一目标。我的连接属性文件如下所示 -

topics.regex=foo.*.bar
solr.url=http://127.0.0.1:8910/solr/RemoveString$Value
transforms=RemoveString
transforms.RemoveString.type=org.apache.kafka.connect.transforms.RegexRouter
transforms.RemoveString.regex=(^foo.)(\w*\d+)(.*)
transforms.RemoveString.replacement=$2

如何在 solr.url 属性中使用 RemoveString 值?

【问题讨论】:

    标签: apache-kafka apache-kafka-connect


    【解决方案1】:

    transforms 实际上只改变 Kafka 记录本身,而不是外部属性,例如 Connect 任务可能使用的客户端

    具体来说,查看source code,您会发现它使用主题名称来映射到各个客户端,但都在同一个 url 上

    【讨论】:

    • 明白了,虽然集合似乎可以使用转换传递,所以 url 将保持为 solr.url=127.0.0.1:8910/solr 然后转换将用于传递集合。据我所知,我上面的转换语法看起来是正确的,但我对实际传递的方式感到困惑。
    • 我不具体知道org.apache.solr.client.solrj.request.UpdateRequest 是如何工作的,但是我在代码中没有看到主题名称实际上是通过客户端发送的;它仅用于地图查找,所有客户端使用相同的 URL
    • 我实际上能够通过在连接器中使用 zookeeper 方法并使用正则表达式转换来指定我的集合来完成这项工作。
    • 如果 SolrCloud 代码与 SolrHttp 有任何不同,我会感到惊讶
    • 我自己很惊讶,但它确实将主题作为集合传递给 github.com/jcustenborder/kafka-connect-solr/blob/master/src/… 我有一个工作示例,但我使用的正则表达式并不像我希望的那样动态stackoverflow.com/questions/68836964/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-16
    • 2017-12-04
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多