我正在使用mule 3.2.1并且有四个主流和一个子流。在每个主流程中,我使用流参考调用子流。在子流程中,将创建多少个实例,因为我调用四次子流程?这种方法会出现任何性能问题或有任何错误吗?请建议我采用这种方法。
四个主流。
<flow name="DetailsFlow1" doc:name="DetailsFlow1">
<inbound-endpoint address="${fd.address}" exchange-pattern="request-response" doc:name="Generic Point"/>
<logger message="PAYLOAD #[payload]" level="INFO" doc:name="Logger"/>
<cxf:jaxws-service port="80" serviceClass="com.integration.IFixedDepositDetails" mtomEnabled="true" enableMuleSoapHeaders="false" doc:name="SOAP"/>
<choice doc:name="Choice">
<when expression="oprationService == 'fd-con'" evaluator="ognl">
<processor-chain>
<component class="com.integration.impl.FixedDepositDetailsImpl" doc:name="Java"/>
<flow-ref name="fdcasterflows1Flow1" doc:name="Flow Reference"/>
</processor-chain>
</when>
</choice>
</flow>
<flow name="DetailsFlow2" doc:name="DetailsFlow2">
<flow-ref name="fdcasterflows1Flow1" doc:name="Flow Reference"/>
</flow>
<flow name="DetailsFlow3" doc:name="DetailsFlow3">
<flow-ref name="fdcasterflows1Flow1" doc:name="Flow Reference"/>
</flow>
<flow name="DetailsFlow4" doc:name="DetailsFlow4">
<flow-ref name="fdcasterflows1Flow1" doc:name="Flow Reference"/>
</flow>
一个子流程
<sub-flow name="fdcasterflows1Flow1" doc:name="fdcasterflows1Flow1">
<component class="com.GetDetails" doc:name="Java"/>
</sub-flow>
答案 0 :(得分:0)
根据我对您上面提到的问题的理解,该组件是在Prototype范围内创建的。因此,将为组件的每个请求创建一个实例。
所以在上面的例子中,它是四个实例,因为子流被调用了四次。
如果对使用Component的子流的请求太多,那么肯定会有性能损失。因此,在这种情况下,您可以显示轮询的组件。
有关Mule网站的更多信息。 http://www.mulesoft.org/documentation/display/MULE3USER/Object+Scopes
希望这有助于..... :)。
答案 1 :(得分:0)
正如@ user1760178所说,将创建组件的四个实例,并且更好地使用池组件配置。但是,如果您的Java组件是无状态组件,那么将singleton
范围与组件关联比将池组件更好。
答案 2 :(得分:0)
根据我对您上面提到的问题的理解,该组件是在Prototype范围内创建的。因此,将为组件的每个请求创建一个实例。
所以在上面的例子中,它是四个实例,因为子流被调用了四次。
如果对使用Component的子流的请求太多,那么肯定会有性能损失。因此,在这种情况下,您可以显示轮询的组件。