Apache Camel Unmarshal 到 Singleton Scoped Bean

Apache Camel Unmarshal to Singleton Scoped Bean

我正在使用 Spring 作为我的 Bean 注册表,我目前有一个使用 Java DSL 定义的路由,如下所示:

@Override
public void configure() throws Exception {
   from("netty:tcp://{{netty.host}}:{{netty.port}}?sync=false")
         .routeId("pbxToBean").unmarshal("castor").to("mock:result");
}

它从 Netty 端点获取 XML 编组输入并将其解编为 PBX bean。

我在想我可以将我的结果 PBX bean 声明为 Singleton 并让 Camel 将未编组的对象传递给 Processor,然后 Processor 更新所述 singleton bean。这行得通吗?

是的,如果 casor 是在注册表中绑定的 bean,

/**
 * <a href="http://camel.apache.org/data-format.html">DataFormat:</a>
 * Unmarshals the in body using the specified {@link DataFormat}
 * reference in the {@link org.apache.camel.spi.Registry} and sets
 * the output on the out message body.
 *
 * @param dataTypeRef  reference to a {@link DataFormat} to lookup in the registry
 * @return the builder
 */
@SuppressWarnings("unchecked")
public Type unmarshal(String dataTypeRef) {
    addOutput(new UnmarshalDefinition(dataTypeRef));
    return (Type) this;
}