Apache camel 如何检查Camel消息体是否基于流?

Apache camel 如何检查Camel消息体是否基于流?,apache-camel,Apache Camel,javadoc的Message.getBody()方法说 请注意,如果消息体是基于流的,那么 那么如何检查主体是否基于流?支票是这样的吗 Object body = exchange.getIn().getBody(); if (body instanceof InputStream) { 不适用于,比如说,文件。我正在编写一个通用代码,它应该为传入的流做某些事情,并保持非流对象不变,因此我谨慎地调用 Object body = exchange.getIn().getBody(InputSt

javadoc的
Message.getBody()
方法说

请注意,如果消息体是基于流的,那么

那么如何检查主体是否基于流?支票是这样的吗

Object body = exchange.getIn().getBody();
if (body instanceof InputStream) {
不适用于,比如说,文件。我正在编写一个通用代码,它应该为传入的流做某些事情,并保持非流对象不变,因此我谨慎地调用

Object body = exchange.getIn().getBody(InputStream.class);

因为我不知道它将如何处理纯字符串、列表或整数等。

没有简单的单一检查可以覆盖100%的情况。就其支持的有效负载格式而言,Camel是开放式的,因此消息体只是一个
java.lang.Object
。因此,要检查其是否基于流,您需要检查诸如“java.io.InputStream”之类的流类型,但您也有其他类型,例如文件,以及来自第三方组件的流数据,这些组件可能有自己的流数据表示形式


Camel内置了流缓存(),它支持大多数流类型,如果您使用它,那么您可以检查主体是否是
org.apache.Camel.StreamCache
实例。

没有简单的单一检查可以覆盖100%的情况。就其支持的有效负载格式而言,Camel是开放式的,因此消息体只是一个
java.lang.Object
。因此,要检查其是否基于流,您需要检查诸如“java.io.InputStream”之类的流类型,但您也有其他类型,例如文件,以及来自第三方组件的流数据,这些组件可能有自己的流数据表示形式


CAMEL有一个内置的流缓存(),它支持大多数流类型,如果您使用它,那么您可以检查该体是否是<代码> org。Apache。CAMEL。流Cache < /Cor>实例。< / P>谢谢,您能考虑为所有基于流的消息类型引入一些伞接口吗?谢谢,您能考虑为所有基于流的消息类型引入一些伞接口吗?