Mule 3:启用相关ID

Mule 3:启用相关ID,mule,Mule,我正在将Mule 1.3应用程序升级到Mule 3.2.1。其中一个出站路由器似乎被配置为在Mule消息还没有相关ID时生成相关ID。这是通过一个名为enableCorrelation的属性完成的 <mule-descriptor name="theName" implementation="org.mule.components.rest.RestServiceWrapper"> <inbound-router ... /> <outbound-r

我正在将Mule 1.3应用程序升级到Mule 3.2.1。其中一个出站路由器似乎被配置为在Mule消息还没有相关ID时生成相关ID。这是通过一个名为
enableCorrelation
的属性完成的

<mule-descriptor name="theName" implementation="org.mule.components.rest.RestServiceWrapper">
    <inbound-router ... />
    <outbound-router>
        <router className="org.mule.routing.outbound.OutboundPassThroughRouter" enableCorrelation="IF_NOT_SET">
            <endpoint address="vm://..." />
        </router>
    </outbound-router>
    <properties>
        <property name="serviceUrl" value="..." />
    </properties>
</mule-descriptor>

如何将此功能转换为Mule 3配置文件?在Mule 3标记中,我没有看到任何与关联ID相关的XML属性。以下是我迄今为止创建的Mule 3流程:

<flow name="theName">
    <inbound-endpoint ... />
    <http:rest-service-component serviceUrl="..." />
    <vm:outbound-endpoint path="..." />
</flow>


谢谢。

Mule 3中提供了
启用相关性
标志:

  • 总之,像现在不鼓励使用的“直通路由器”
  • 在少数情况下,如
    集合拆分器
    ,需要它

恐怕您必须创建一个自定义转换器来模拟上述行为之外的其他行为。

David谢谢。我似乎无法使用“pass-through-router”元素而不得到XML验证错误。我尝试将它包装起来,并将其放入
出站端点
元素中,但都不起作用。是否必须包含名称空间?我看到的一些示例显示它与
服务
…我是否必须使用
服务
而不是
?这是正确的,传统路由器只能与
服务
结构一起使用,您不应该再使用它,因为它将在未来的Mule主要版本中消失。所以我想这意味着我应该创建一个自定义的转换器(我甚至需要启用关联吗?默认情况下,是否将关联ID添加到所有Mule消息中?关联仅适用于某些类型的路由操作,如拆分。除非您的应用程序在这方面有特殊要求,否则不需要担心关联ID。不,Mule默认情况下不创建关联ID,e默认情况下,每条消息都有一个唯一的ID。一些传输在它们创建的消息(如JMS)与低级概念(如JMSCorrelationID标头)匹配时,会设置相关ID,但大多数传输不设置相关ID。我的流使用Quartz定期调用自己。流发出HTTP请求,转换HTTP响应(我认为是XML)从字节数组到字符串,然后将字符串发送给电子邮件中的某人。当邮件路由到
smtp:outbound endpoint
时,邮件正文中包含的是邮件正文,还是Mule邮件的其他方面也包含在正文中(如入站属性)?