Spring boot Apache camel与Spring DSL封送到json问题
我有以下配置Spring boot Apache camel与Spring DSL封送到json问题,spring-boot,apache-camel,spring-dsl,Spring Boot,Apache Camel,Spring Dsl,我有以下配置 <dataFormats> <json id="orderModel" library="Jackson" objectMapper="com.camel.CustomObjectMapper" unmarshalTypeName="com.orders.OrderModel"/> <json id="salesOrder" library="Jackson" objectMapper="co
<dataFormats>
<json id="orderModel" library="Jackson" objectMapper="com.camel.CustomObjectMapper"
unmarshalTypeName="com.orders.OrderModel"/>
<json id="salesOrder" library="Jackson" objectMapper="com.camel.CustomObjectMapper"
unmarshalTypeName="com.camel.model.salesorder.SalesOrder"/>
</dataFormats>
<route id="orderTranslateToSalesOrder">
<from ref="orderPlaced"/>
<unmarshal ref="orderModel" />
<process ref="customerProcessor" />
<process ref="salesOrderConverter"/>
<marshal ref="salesOrder"/>
<inOnly ref="orderCreate" />
<process ref="history"/>
</route>
如果您的
ExchangePattern
设置为InOnly
(看起来是这样的),则exchange的外部部分将被丢弃
改变
exchange.getOut().setHeaders(exchange.getIn().getHeaders());
exchange.getOut().setBody(salesOrder, SalesOrder.class);
为此:
exchange.getIn().setBody(salesOrder, SalesOrder.class);
这样,您也不必从部件中复制标题,因为它们已经存在了
您可以阅读有关如何以及何时使用getIn/getOut的更多信息,因为您尚未在pojo中映射此字段,因此无法识别字段“SalesOrder”。如果您不想映射,那么还应该在pojo中包含注释@JsonIgnore谢谢您提供的信息,我尝试了
exchange.getIn().setBody(salesOrder,salesOrder.class)代码>但仍然存在相同的问题
exchange.getIn().setBody(salesOrder, SalesOrder.class);