1

我有一个应用程序是 Mule 3,现在我需要将它迁移到 Mule 4。

我实现并更改了一些代码,但它通过不支持标记的异常,即不支持“rest-router”。

<rest-router:router templateUri="${igate.url}">
<!--Migration ERROR: The migration of 'rest-router' is not supported.-->
<!-- For more information refer to:-->
<!-- * https://docs.mulesoft.com/mule-runtime/4.1/migration-connectors>--
<!-- * https://beta.docs.stgx.mulesoft.com/beta-mule-migration-tool/mule-runtime/4.1/migration-tool.html#unsupported_connectors-->
<rest-router:post>
<ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" doc:name="JSON to Object">
<ee:message>
<ee:set-payload>%dw 2.0 output application/java --- payload as Object { class: 'com.ifi.igate.model.Transaction'}</ee:set-payload>
</ee:message>
</ee:transform>
<flow-ref name="igate-object-flow" doc:name="igate-object-flow" />
<ee:transform xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core" doc:name="Object to JSON" mimeType="application/json">
<ee:message>
<ee:set-payload>%dw 2.0 output application/json --- payload</ee:set-payload>
</ee:message>
</ee:transform>
</rest-router:post>
</rest-router:router>

我们需要在 Mule 4 上迁移的 Mule 3 中的完整 XML 文件 -

<spring:beans>
            <spring:bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
                <spring:property name="ignoreUnresolvablePlaceholders" value="true"/>
                <spring:property name="location" value="igate.properties"/>
            </spring:bean>
            <spring:bean id="validation" class="com.ifi.igate.integration.iclient.ValidationTransformer">
                <spring:property name="transactionTypes">
                    <spring:list>
                        <spring:value>INQ-REQ</spring:value> 
                        <spring:value>DEP-REQ</spring:value> 
                        <spring:value>WIT-REQ</spring:value> 
                    </spring:list>
                </spring:property>
            </spring:bean>
            <spring:bean id="iGateStub" class="com.ifi.igate.stub.IGateStub">
                <spring:property name="handlers">
                    <spring:map>
                        <spring:entry key="INQ-REQ">
                            <spring:bean class="com.ifi.igate.stub.handlers.InqHandler"/>
                        </spring:entry>
                        <spring:entry key="WIT-REQ">
                            <spring:bean class="com.ifi.igate.stub.handlers.WitHandler"/>
                        </spring:entry>
                        <spring:entry key="DEP-REQ">
                        <spring:bean class="com.ifi.igate.stub.handlers.DepHandler"/>
                    </spring:entry>
                    </spring:map>
                </spring:property>
            </spring:bean>
        </spring:beans>
        <rest-router:config/>
        <http:connector name="httpConnector" doc:name="HTTP\HTTPS">
            <receiver-threading-profile maxThreadsActive="10" />
        </http:connector>
        <flow name="igate-json-flow" doc:name="igate-json-flow">
            <http:inbound-endpoint exchange-pattern="request-response" host="${igate.host}" port="${igate.port}" doc:name="HTTP"/>
            <rest-router:router templateUri="${igate.url}">  
                <rest-router:post> 
                    <json:json-to-object-transformer xmlns:json="http://www.mulesoft.org/schema/mule/json" returnClass="com.ifi.igate.model.Transaction" doc:name="JSON to Object"></json:json-to-object-transformer>  
                    <flow-ref name="igate-object-flow" doc:name="igate-object-flow"/>
                    <json:object-to-json-transformer xmlns:json="http://www.mulesoft.org/schema/mule/json" doc:name="Object to JSON" mimeType="application/json"></json:object-to-json-transformer> 
                </rest-router:post> 
            </rest-router:router>
            <rest-router:router templateUri="${igate-stub.url}">
                <rest-router:post> 
                    <json:json-to-object-transformer xmlns:json="http://www.mulesoft.org/schema/mule/json" returnClass="com.ifi.igate.model.Transaction" doc:name="JSON to Object"/>
                    <component doc:name="IGateStub">
                        <spring-object bean="iGateStub"/>
                    </component>
                    <json:object-to-json-transformer xmlns:json="http://www.mulesoft.org/schema/mule/json" doc:name="Object to JSON" mimeType="application/json"/>
                </rest-router:post>
            </rest-router:router>   
        </flow>
        <sub-flow name="igate-object-flow" doc:name="igate-object-flow">         
            <transformer ref="validation"/>
            <choice>
                <when expression="#[message.payload.trxstatus == 0]">
                    <logger message="#[message.payload.trxreason]" level="ERROR" doc:name="Logger"/>
                </when>
                <otherwise>
                    <set-variable variableName="request" value="#[message.payload]" doc:name="save request"/>
                    <flow-ref name="promotions-flow" doc:name="Promotions Flow"/>
                    <flow-ref name="ifi-membership-flow" doc:name="Accumulate Spending"/>
                    <!-- logger message="Before backend" level="ERROR" doc:name="Logger"/-->
                    <flow-ref name="rewards-flow" doc:name="Rewards Flow"/>
                    <choice>
                        <when expression="#[message.payload.values['PTS']>0 || message.payload.trxtype=='INQ-REQ']">
                            <flow-ref name="${igate.membership}-membership-flow" doc:name="External Membership Flow"/>
                        </when>
                        <otherwise>
                            <vm:outbound-endpoint exchange-pattern="request-response" path="membership/ifi" />
                    </otherwise>
                    </choice>
                    <!-- logger message="After backend" level="ERROR" doc:name="Logger"/-->
                    <flow-ref name="promotions-flow" doc:name="Promotions Flow"/>
                    <flow-ref name="rewards-flow" doc:name="Rewards Flow"/>
                    <flow-ref name="ifi-membership-flow" doc:name="Manage balances"/>
                    <flow-ref name="pricing-flow" doc:name="Pricing Flow"/>
            </otherwise>
             </choice>
        </sub-flow>
    </mule>

Mule 4 不支持“rest-router”,只需替换该标签或如何将其迁移到 Mule 4。

4

1 回答 1

1

rest-router seems to be an unsupported and unmaintained (last commit is from 2012) module for Mule 3. You best bet is to migrate from scratch and use APIKit instead. You will need to write a RAML specification for your API and Studio will create all the needed scaffolding from it.

于 2019-07-04T02:16:58.797 回答