Neo4j 从触发器写入 Kafka 主题

问题描述 投票:0回答:2

我正在寻找一种从 Neo4j-Trigger 写入 Kafka 主题的方法,以实现事件驱动的通知。我尝试在 UDF/UDP 中使用 Kafka Producer,如下所示:

@UserFunction(name = "kafka.write_to_topic")
public void writeToKafka(@Name("topic") String topic, @Name("message") String message) {
    Properties producerConfig = new Properties();
    producerConfig.put(BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");
    Producer<String, String> producer = new KafkaProducer<String, String>(producerConfig, new StringSerializer(), new StringSerializer());
    producer.send(new ProducerRecord<>(topic, null, message));
}

但遗憾的是该方法未被识别。由于找不到错误信息,我逐行测试了该函数,有问题的代码行是

    Producer<String, String> producer = new KafkaProducer<String, String>(producerConfig, new StringSerializer(), new StringSerializer());

添加此行会导致密码查询中无法识别该方法。我想要类似 CALL Streams.publish('my-topic', 'Hello World from Neo4j!') 的东西,可以从触发器调用。但由于 Neo4j-Streams-Procedures 已被弃用,我不想使用它们。 Neo4j-Kafka-Connector仅提供定期查询,但我正在尝试找到一种事件驱动的方式。如果这可能的话有什么想法吗?

apache-kafka neo4j triggers
2个回答
1
投票

现在最可靠的解决方案是使用 Neo4j 自 5.13 起提供的更改数据捕获功能。

基本上,您将创建一个小型 Java 应用程序,该应用程序将 CDC 过程与 Neo4j 驱动程序结合使用,并在发生更改事件时将其发布到 Kafka。

未来可能会出现使用 CDC 的 Kafka 连接器。


1
投票

Neo4j 有一个 Confluence/Kafka 连接器,使您能够在发生更改时写入 kafka 主题 - 当前版本不适用于更改数据捕获。早期访问预览中有支持 CDC 的版本 - 当连接器公开可用时我将更新这篇文章

© www.soinside.com 2019 - 2024. All rights reserved.