我使用Hawtio和Camel版本2.17.1来控制camel上下文中的路由。 当我停止然后用Hawtio重新启动我的一条路线时,我遇到了一个不寻常的 问题似乎没有意识到它的类。
从队列中读取消息,所有消息都以字符串开头。这些是 然后使用xsd架构成功解组。在选择期间,身体是 尽管被解读为正确的,但总是被发现是一种未知的类型 在此之前的课程。令人困惑的是,然后使用了合适的自定义类型转换器 将邮件转换为预期的类型。
<route id="responseRoute" autoStartup="false">
<from uri="{{response.from.uri}} />
<transacted ref="PROPAGATION_REQUIRED_CONSUMER"/>
// class is String
<unmarshal ref="unmarshalJAXB" />
// class is type.A
<choice>
<when>
<simple>${body} is 'type.A'</simple>
<log message="Body is type A" />
<convertBodyTo type="type.C" />
</when>
<when>
<simple>${body} is 'type.B'</simple>
<log message="Body is type B" />
<convertBodyTo type="type.C" />
</when>
<otherwise>
// always this option - unknown type
<log message="Body is unknown type" />
<convertBodyTo type="type.C" />
</otherwise>
</choice>
<marshal ref="marshalJAXB" />
<to uri="{{response.to.uri}}" />
</route>
如果autoStartup选项设置为true,则每条消息都会成功处理, 点击选择块中的正确选项。
为什么使用Hawtio启动路由会阻止消息体知道它是什么类? 有没有办法解决这个问题?