You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Camel 3.12.0结合MongoDB 4.4变更流(ChangeStreams)更新操作时Exchange体为空问题:如何配置FullDocument.UPDATE_LOOKUP

解决方案:无需修改Camel源码,用配置参数即可解决

不用去修改Camel的MongoDbChangeStreamsThread.java类!Camel 3.12.0的MongoDB变更流组件已经提供了专门的配置参数来设置FullDocument.UPDATE_LOOKUP,完全不需要自己维护修改后的库,能有效降低后续维护成本。

具体操作步骤:

  • 在你的MongoDB端点URI中添加fullDocument=UPDATE_LOOKUP参数,这会告诉MongoDB在update类操作发生时,返回更新后的完整文档,而不是仅返回变更字段和_id。

修改后的路由代码如下:

from("mongodb:mongoClient?consumerType=changeStreams&database=test&collection=accounts&fullDocument=UPDATE_LOOKUP")
    .process(new MongoIdProcessor())
    .to("solrCloud://minikube:8983/solr?zkHost=minikube:2181,minikube:2182,minikube:2183&collection=accounts&autoCommit=true")

为什么之前会出现空Body的问题?

默认情况下,MongoDB的变更流在处理updateOne/updateMany操作时,只会返回变更的字段以及_id,而Camel的MongoDB组件默认没有配置fullDocument选项,导致你拿到的Exchange Body为空。设置UPDATE_LOOKUP后,MongoDB会自动查询并返回更新后的完整文档,这样你的exchange.getIn().getBody()就能获取到完整的文档数据了。

这样配置后,你就不用修改任何Camel源码,直接通过端点参数就能实现需求,完全避免了维护自定义库的麻烦。

内容的提问来源于stack exchange,提问作者C C H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.01 01:02:45