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;
}
我正在使用 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;
}