Apache camel 在Camel中跟踪流消息

Apache camel 在Camel中跟踪流消息,apache-camel,Apache Camel,在我的项目中,使用ApacheCamel进行消息路由。来自某些节点的消息需要跟踪。为此,我使用BacklogTracer的实例。只要传递的消息不是InputStream,就可以了。在这种情况下,将收到以下字符串: [正文是java.io.InputStream的实例] 对于跟踪流,使用键“isBodyIncludeStreams”。现在我从一个InputStream获得一条消息,但是现在读取了一条流,路由释放了一条消息以供进一步处理。 所以,问题是,我如何跟踪InputStream中的消息而不丢

在我的项目中,使用ApacheCamel进行消息路由。来自某些节点的消息需要跟踪。为此,我使用BacklogTracer的实例。只要传递的消息不是InputStream,就可以了。在这种情况下,将收到以下字符串:

[正文是java.io.InputStream的实例]

对于跟踪流,使用键“isBodyIncludeStreams”。现在我从一个InputStream获得一条消息,但是现在读取了一条流,路由释放了一条消息以供进一步处理。

所以,问题是,我如何跟踪InputStream中的消息而不丢失它们

BacklogTracer的实例:

val tracer = camelContext.defaultBacklogTracer as BacklogTracer
tracer.isEnabled = true
tracer.isBodyIncludeStreams = true

Apache Camel版本:2.24.0

为了不丢失流,您需要激活流缓存:

camelContext.isStreamCaching = true
此外,这里还有一些缓存策略的配置: