Kafka-Neo4J-Connector:如果没有返回时间戳,则$lastCheck不会更新

mrwjdhj3  于 11个月前  发布在  Apache
关注(0)|答案(1)|浏览(106)

我遵循了Neo4J-Kafka-Connector的快速入门教程。

MATCH (ts:TestSource) WHERE ts.timestamp > $lastCheck RETURN ts.name AS name, ts.surname AS surname, ts.timestamp AS timestamp

字符串
如果满足ts.timestamp > $lastCheck条件,则在Kafka主题中插入name, surname, timestamp行。
如果我从return-clause中删除了ts.timestamp as timestamp,那么$lastCheck参数就不会再更新了,所以where条件总是为true,并且每次请求都会查询整个图。有没有一种方法可以在不返回时间戳的情况下更新$lastCheck参数?这将是很好的,特别是对于聚合,如果不需要对时间戳进行分组的话。

编辑

为了更好地说明这个问题,我在return子句中添加了$lastCheck参数。

MATCH (ts:TestSource) WHERE ts.timestamp > $lastCheck RETURN ts.name AS name, ts.surname AS surname, ts.timestamp AS timestamp, $lastCheck as lastCheck


将以下消息写入我的主题:x1c 0d1x
在这里,我插入了示例TestSource节点两次(经过短暂的延迟),以显示更新后的$lastCheck参数。
CREATE(:TestSource {name:“约翰”,姓:'doe',时间戳:}); CREATE(:TestSource {name:“玛丽”,姓:'doe',时间戳:}); CREATE(:TestSource {name:“杰克”,姓:'small',时间戳:});
现在我从return子句中删除ts.timestamp as timestamp

MATCH (ts:TestSource) WHERE ts.timestamp > $lastCheck RETURN ts.name AS name, ts.surname AS surname, $lastCheck as lastCheck


数据库中的节点被删除,我只插入了一次。主题中的消息如下所示:



截图只显示了前七个,但这些消息被无限打印出来。有时候主题中的$lastCheck也只是被第二个查询返回为-1

avwztpqn

avwztpqn1#

您从源示例的neo4j.source.query值中删除了timestamp,但假定neo4j.streaming.property仍然分配给“timestamp”。
根据the documentation,可选的neo4j.streaming.property属性是:
为了确定最后查询的记录,我们需要考虑的属性的名称;如果没有定义,我们使用最后执行的检查中给出的内部值。我们使用此值将其作为$lastCheck参数注入到neo4j.source.query中定义的查询中。

  • 我修正了上述引用中的一个错字。*

尝试删除可选的neo4j.streaming.property属性,以便可以使用内部值。

相关问题