【发布时间】:2021-03-26 06:11:24
【问题描述】:
我正在尝试通过以下 Spring Boot 启动器使用 Debezium Sql Server Connector for Apache Camel 将更改从一个数据库复制到另一个数据库:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-debezium-sqlserver-starter</artifactId>
<version>3.5.0</version>
</dependency>
到目前为止,我只是将生成的事件记录到特定表中:
import org.apache.camel.LoggingLevel;
import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Component;
@Component
public class MyRoute extends RouteBuilder {
@Override
public void configure() throws Exception {
from("debezium-sqlserver:iwd" +
"?databaseHostname=localhost" +
"&databasePort=1433" +
"&databaseServerName=iwd" +
"&databaseDbname=iwd" +
"&databaseUser=sa" +
"&databasePassword=MyPassword-1" +
"&tableWhitelist=dbo.MyTable-1" +
"&offsetStorageFileName=./offset-file-1.dat" +
"&databaseHistoryFileFilename=./history-file-1.dat")
.routeId(MyRoute.class.getName() + ".DatabaseReader")
.log(LoggingLevel.INFO, "Incoming message ${body} with headers ${headers}");
}
}
在初始化应用程序时,它会为表的每一行报告一个事件,问题是稍后它不会实时报告事件,例如,如果我在表中插入或更新一行。
【问题讨论】:
-
您好,请确保您关注debezium.io/documentation/reference/1.3/connectors/… 并且您已运行 SQL Server 代理
-
感谢@JiriPechanec。事实上,我只在数据库级别启用了 CDC,enabling CDC for each table that I plan to monitor 并按照您的建议运行 SQL Server 代理,解决了这个问题。 (如果您愿意,请将其发布为更完整的答案,我会接受它)
标签: java sql-server spring-boot apache-camel debezium