如何使用 debezium 处理发件箱模式?
Posted
技术标签:
【中文标题】如何使用 debezium 处理发件箱模式?【英文标题】:How to work on outbox pattern using debezium? 【发布时间】:2021-05-31 05:28:51 【问题描述】:有人有使用 debezium 创建发件箱模式的好链接吗?
以下 URL 中提到的步骤似乎不起作用。
https://github.com/debezium/debezium-examples/tree/master/outbox
错误跟踪:
[信息] --------------------------------------------- ----------------------------
[INFO] Debezium Outbox 演示的 Reactor 摘要 - 构建聚合器 1.0.0-SNAPSHOT:
[信息]
[信息] Debezium Outbox 演示 - 构建聚合器............成功 [ 1.729 s]
[信息] Debezium 发件箱演示 - 订单服务 ...... 失败 [ 43.897 秒]
[信息] Debezium 发件箱演示 - 发货服务............失败 [45.137 秒]
[信息] --------------------------------------------- -------------------------
[信息] 构建失败
[信息] --------------------------------------------- -------------------------
[INFO] 总时间:48.723 秒(挂钟)
[INFO] 完成时间:2021-03-06T01:04:50+05:30
[信息] --------------------------------------------- -------------------------
[错误] 无法执行目标 io.quarkus:quarkus-maven-plugin:1.12.0.Final:build (default) on project outbox-order-service: 无法构建 quarkus 应用程序:io.quarkus.builder.BuildException: Build failure:由于错误,构建失败
[错误] [错误]:构建步骤 io.quarkus.deployment.pkg.steps.NativeImageBuildStep#build 引发异常:java.lang.RuntimeException:在 GRAALVM_HOME、JAVA_HOME 和系统路径中找不到 native-image
。使用gu install native-image
安装它
[错误] 在 io.quarkus.deployment.pkg.steps.NativeImageBuildStep.getNativeImageExecutable(NativeImageBuildStep.java:627)
[错误] 在 io.quarkus.deployment.pkg.steps.NativeImageBuildStep.getNativeImage(NativeImageBuildStep.java:343)
[错误] 在 io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:112)
[错误] 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
[错误] 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
[错误] 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[错误] 在 java.base/java.lang.reflect.Method.invoke(Method.java:564)
[错误] 在 io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:920)
[错误] 在 io.quarkus.builder.BuildContext.run(BuildContext.java:277)
[错误] 在 org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2415)
[错误] 在 org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
[错误] 在 java.base/java.lang.Thread.run(Thread.java:832)
[错误] 在 org.jboss.threads.JBossThread.run(JBossThread.java:501)
[错误] -> [帮助 1]
[错误] 无法执行目标 io.quarkus:quarkus-maven-plugin:1.12.0.Final:build (default) on project outbox-shipment-service: 无法构建 quarkus 应用程序:io.quarkus.builder.BuildException: Build failure:由于错误,构建失败
[错误] [错误]:构建步骤 io.quarkus.deployment.pkg.steps.NativeImageBuildStep#build 抛出异常:java.lang.RuntimeException:在 GRAALVM_HOME、JAVA_HOME 和系统路径中找不到 native-image
。使用gu install native-image
安装它
[错误] 在 io.quarkus.deployment.pkg.steps.NativeImageBuildStep.getNativeImageExecutable(NativeImageBuildStep.java:627)
[错误] 在 io.quarkus.deployment.pkg.steps.NativeImageBuildStep.getNativeImage(NativeImageBuildStep.java:343)
[错误] 在 io.quarkus.deployment.pkg.steps.NativeImageBuildStep.build(NativeImageBuildStep.java:112)
[错误] 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
[错误] 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
[错误] 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[错误] 在 java.base/java.lang.reflect.Method.invoke(Method.java:564)
[错误] 在 io.quarkus.deployment.ExtensionLoader$2.execute(ExtensionLoader.java:920)
[错误] 在 io.quarkus.builder.BuildContext.run(BuildContext.java:277)
[错误] 在 org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2415)
[错误] 在 org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1452)
[错误] 在 java.base/java.lang.Thread.run(Thread.java:832)
[错误] 在 org.jboss.threads.JBossThread.run(JBossThread.java:501)
[错误] -> [帮助 1]
[错误]
[错误] 要查看错误的完整堆栈跟踪,请使用 -e 开关重新运行 Maven。
[错误] 使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。
[错误]
[错误] 有关错误和可能的解决方案的更多信息,请阅读以下文章:
[错误] [帮助 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
[错误]
[错误] 更正问题后,您可以使用命令恢复构建
[错误] mvn -rf :outbox-order-service
【问题讨论】:
你能扩展一下那个例子中到底有什么不工作的地方吗? @Gunnar 更新了错误跟踪 【参考方案1】:所有信息实际上都在错误信息中:
在 GRAALVM_HOME、JAVA_HOME 和系统路径中找不到本机映像。使用 gu install native-image 安装它
您正在尝试将应用程序构建为 GraalVM 本机二进制文件,但没有为此安装所需的工具。所以要么安装 native-image 工具(有关详细信息,请参阅相关的 Quarkus guide),或者改为构建为 JVM 应用程序(通过将 QUARKUS_BUILD
设置为 jvm
)。
【讨论】:
以上是关于如何使用 debezium 处理发件箱模式?的主要内容,如果未能解决你的问题,请参考以下文章
Debezium 发件箱模式 |如果我们使用 debezium,架构是用 SMT/发件箱表固定的吗