如何在debezium中将offset.commit.policy设置为AlwaysCommitOffsetPolicy?

时间:2018-10-10 09:52:01

标签: debezium

我创建了一个Debezium Embedded引擎来捕获MySQL变更数据。我想尽快提交补偿。在代码中,创建的配置包括以下内容。

.with("offset.commit.policy",OffsetCommitPolicy.AlwaysCommitOffsetPolicy.class.getName())

运行此命令会返回java.lang.NoSuchMethodException: io.debezium.embedded.spi.OffsetCommitPolicy$AlwaysCommitOffsetPolicy.<init>(io.debezium.config.Configuration)

但是,当我启动嵌入式引擎时, .with("offset.commit.policy",OffsetCommitPolicy.PeriodicCommitOffsetPolicy.class.getName()),嵌入式引擎可以正常工作。

请注意,类OffsetCommitPolicy.PeriodicCommitOffsetPolicy的构造函数包括config参数,而OffsetCommitPolicy.AlwaysCommitOffsetPolicy不包括。

public PeriodicCommitOffsetPolicy(Configuration config) { ... }

如何使debezium嵌入式引擎使用其AlwaysCommitOffsetPolicy

2 个答案:

答案 0 :(得分:0)

感谢您的举报。这是部分错误(如果您可以登录到我们的Jira,我们将不胜感激)。您可以通过调用诸如io.debezium.embedded.EmbeddedEngine.create()。with(OffsetCommitPolicy.always())的专用方法嵌入式引擎构建器来解决此问题。

答案 1 :(得分:0)

使用 1.4.0Final 版本测试:

new EmbeddedEngine.BuilderImpl() // create builder
        .using(config) // regular config
        .using(OffsetCommitPolicy.always()) // explicit commit policy
        .notifying(this::handleEvent) // even procesor
        .build(); // and finally build!