routes - Mule 子流程与处理器链

标签 routes mule mule-studio

Mule 中的子流和处理器链有什么区别?

据我使用过,两者都是可重复使用的。两者都使配置更具可读性。两者同步执行。两者都继承了触发流程中的处理策略和异常策略。

处理器链可以在流程以及全局消息处理器中定义。

除此之外,它们在行为和用法方面有何不同。

更新: 具有命名处理器链的示例配置

<flow name="man-flow" >
        <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8081" path="myapp/collection-processor" doc:name="HTTP">
            <byte-array-to-string-transformer></byte-array-to-string-transformer>
        </http:inbound-endpoint>
        <expression-component doc:name="Expression"><![CDATA[java.util.ArrayList list = new java.util.ArrayList();
            list.add("First String");
            list.add("Second String");
            list.add("Third String");
            payload = list;]]>          
        </expression-component>
        <request-reply>
            <vm:outbound-endpoint path="split"/>
            <vm:inbound-endpoint path="processed"/> 
        </request-reply>   
        <set-payload  value="#[payload.toString()]"/>
    </flow> 

    <processor-chain name="sample-processor-chain">
        <append-string-transformer message=" in splitter" />
        <append-string-transformer message=" in processor-chain" />
    </processor-chain> 

    <flow name="splitter-flow">
        <vm:inbound-endpoint  path="split"/>
        <collection-splitter enableCorrelation="IF_NOT_SET"/>
        <processor ref="sample-processor-chain"></processor> 
        <vm:outbound-endpoint  path="aggregate"/>       
    </flow>

    <flow name="aggregator-flow">
        <vm:inbound-endpoint  path="aggregate"/>
        <collection-aggregator  timeout="30000"/>           
        <vm:outbound-endpoint path="processed"/>
    </flow>

最佳答案

processor-chain 的创建是为了解决某些消息处理器不允许多个嵌套处理器的问题。 子流背后的思想是一系列消息处理器的宏扩展。如果你使用最新的 Mule 版本,你不应该过多使用处理器链,除了一些非常旧的结构。使用子流程可以让您获得更具可读性的代码,例如,包含重复的内容。

关于routes - Mule 子流程与处理器链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26108888/

相关文章:

java - 如何使用 Talend Open Studio Data Integration 创建属性文件?

json - 为什么 mule json 到 xml 转换器只选取第一个元素?

ruby-on-rails - 通配符路由的 Rspec 路由测试失败

angular - RxJS Pipe 在 Angular Resolver 中不起作用(但在 ngOnInit 中工作正常)

node.js - Express 中的数据库查询错误 : Router. use() 需要一个中间件函数,但得到一个未定义的

mule - 如何使用 mule requester for SFTP - 动态文件名和路径

java - Eclipse 中 Mule 的代码覆盖工具

java - 骡子 - NoClassDefFoundError : Could not initialize class java. time.zone.ZoneRulesProvider

curl - 如何使用 curl 从命令行界面 (CLI) 调用 Mule 的文件入站端点?

php - 当我用 spatie 包处理 stripewebbook 时没有任何反应