38.11. 启用持久的尾部跟踪


要启用此功能,请在端点 URI 中设置至少以下选项:

  • persistentTailTracking 选项为 true
  • 在这个消费者的唯一标识符中 persistentId 选项,以便在很多用户间重复使用相同的集合

另外,您还可以将 tailTrackDb,tailTrackCollectiontailTrackField 选项设置为自定义存储运行时信息的位置。有关每个选项的描述,请参阅此页面顶部的端点选项表。

例如,以下路由将从 "flights. canceledlations" capped 集合使用,使用 "departureTime" 作为 increasing 字段,默认重新生成光标延迟为 1000ms,并打开持久的 tail 跟踪,并在"flights.camelTailTracking"的 " cancellationsTracker" 下保留。 在 "lastTrackingValue" 字段中存储最后一个已处理的值(camelTailTrackinglastTrackingValue 为 defaults)。

from("mongodb:myDb?database=flights&collection=cancellations&tailTrackIncreasingField=departureTime&persistentTailTracking=true" +
     "&persistentId=cancellationsTracker")
    .id("tailableCursorConsumer2")
    .autoStartup(false)
    .to("mock:test");
Copy to Clipboard Toggle word wrap

以下是与上例相同的另一个示例,但持久尾部跟踪运行时信息将存储在"trackers.camelTrackers"集合中,位于"lastProcessedDepartureTime"字段中:

from("mongodb:myDb?database=flights&collection=cancellations&tailTrackIncreasingField=departureTime&persistentTailTracking=true" +
     "&persistentId=cancellationsTracker&tailTrackDb=trackers&tailTrackCollection=camelTrackers" +
     "&tailTrackField=lastProcessedDepartureTime")
    .id("tailableCursorConsumer3")
    .autoStartup(false)
    .to("mock:test");
Copy to Clipboard Toggle word wrap

38.11.1. 更改 Streams Consumer

更改流允许应用程序访问实时数据更改,而不需要跟踪 MongoDB oplog 的复杂性和风险。应用程序可以使用更改流来订阅集合上的所有数据更改,并立即响应它们。由于更改流使用聚合框架,应用程序也可以过滤特定更改或转换通知。交换正文将包含任何更改的完整文档。

要配置 Change Streams Consumer,您需要指定 consumerType数据库集合 和可选 JSON 属性 流Filter 来过滤事件。该 JSON 属性是标准的 MongoDB $match 聚合。可以使用 XML DSL 配置轻松指定:

<route id="filterConsumer">
    <from uri="mongodb:myDb?consumerType=changeStreams&amp;database=flights&amp;collection=tickets&amp;streamFilter={ '$match':{'$or':[{'fullDocument.stringValue': 'specificValue'}]} }"/>
    <to uri="mock:test"/>
</route>
Copy to Clipboard Toggle word wrap

Java 配置:

from("mongodb:myDb?consumerType=changeStreams&database=flights&collection=tickets&streamFilter={ '$match':{'$or':[{'fullDocument.stringValue': 'specificValue'}]} }")
    .to("mock:test");
Copy to Clipboard Toggle word wrap
注意

您可以将 streamFilter 值外部化到属性占位符,允许端点 URI 参数 清理 并便于阅读。

changeStreams 消费者类型也会返回以下 OUT 标头:

Expand
标头键快速持续描述(从 MongoDB API 文档中提取)数据类型

CamelMongoDbStreamOperationType

MongoDbConstants.STREAM_OPERATION_TYPE

发生的操作类型。可以是以下值之一: insert, delete, replace, update, drop, rename, dropDatabase, invalidate。

字符串

_id

MongoDbConstants.MONGO_ID

包含插入、替换、删除、更新操作(如 CRUD 操作)创建或修改的文档的文档。对于分片集合,还显示文档的完整分片密钥。如果 _id 字段已经是 shard 密钥的一部分,则不会重复它。

ObjectId

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat