一个不错的MULE主文件

mule & seda 的使用每分钟处理5000单,发帖纪念 .
<mule xmlns="http://www.mulesource.org/schema/mule/core/2.2"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:spring="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.mulesource.org/schema/mule/jdbc/2.2" xmlns:xm="http://www.mulesource.org/schema/mule/xml/2.2"
    xmlns:stdio="http://www.mulesource.org/schema/mule/stdio/2.2" xmlns:vm="http://www.mulesource.org/schema/mule/vm/2.2"
    xmlns:cxf="http://www.mulesource.org/schema/mule/cxf/2.2"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
       http://www.mulesource.org/schema/mule/core/2.2 http://www.mulesource.org/schema/mule/core/2.2/mule.xsd
       http://www.mulesource.org/schema/mule/jdbc/2.2 http://www.mulesource.org/schema/mule/jdbc/2.2/mule-jdbc.xsd
       http://www.mulesource.org/schema/mule/xml/2.2 http://www.mulesource.org/schema/mule/xml/2.2/mule-xml.xsd
       http://www.mulesource.org/schema/mule/vm/2.2 http://www.mulesource.org/schema/mule/vm/2.2/mule-vm.xsd
       http://www.mulesource.org/schema/mule/cxf/2.2 http://www.mulesource.org/schema/mule/cxf/2.2/mule-cxf.xsd
       http://www.mulesource.org/schema/mule/stdio/2.2 http://www.mulesource.org/schema/mule/stdio/2.2/mule-stdio.xsd">

    <context:property-placeholder location="classpath:conf/webserviceClientUrl.properties" />
    <stdio:connector name="SystemStreamConnectorActive"
        promptMessageCode="3" messageDelayTime="1000" />

    <spring:beans>
        <spring:import resource="classpath:conf/applicationContext.xml" />
    </spring:beans>

    <configuration>
        <default-dispatcher-threading-profile
            maxThreadsActive="50" maxThreadsIdle="25" threadWaitTimeout="1000" threadTTL="60000" />
        <default-receiver-threading-profile
            maxThreadsActive="50" maxThreadsIdle="25" threadWaitTimeout="1000" threadTTL="60000" />
        <default-service-threading-profile
            maxThreadsActive="50" maxThreadsIdle="25" threadWaitTimeout="1000" threadTTL="60000" />            
    </configuration>

    <jdbc:connector name="jdbcConnectorActive" pollingFrequency="1200" dataSource-ref="dataSource">
    
        <!-- 激活 -->    
        <jdbc:query key="orderQry"
            value="select /*+index(c IDX_VSOP_CUST_ORDER_STATUS)*/ c.cust_order_id
                  from customer_order c
                 where exists (select /*+index(b IDX_ORDER_ITEM_STATUS)*/ b.cust_order_id
                          from order_item b
                         where b.order_item_cd = 'T20'
                           and b.status = '1501'
                           and b.cust_order_id = c.cust_order_id)
                   and c.status = '040'
                   and rownum between 0 and 100" />
        <jdbc:query key="orderQry.ack"
            value="update CUSTOMER_ORDER set STATUS='110'  where CUST_ORDER_ID = #[map-payload:CUST_ORDER_ID] " />
            
        <!-- 竣工 -->
        <jdbc:query key="orderCompletionQry"
            value="select a.cust_order_id from customer_order a where a.status = '120' and rownum between 0 and 100" />
        <jdbc:query key="orderCompletionQry.ack"
            value="update CUSTOMER_ORDER set STATUS='899'  where CUST_ORDER_ID = #[map-payload:CUST_ORDER_ID] " />
        
        <!-- 用户状态同步下发 -->    
        <jdbc:query key="userInfoSynQry"
            value="select a.user_info_syn_id,
                       a.system_id,
                       a.action_type,
                       a.prod_spec_code,
                       a.product_no,
                       a.old_product_no,
                       a.user_state,
                       a.user_pay_type,
                       a.state
                  from user_info_syn a where a.state = '100'
                   and rownum between 0 and 100" />
        <jdbc:query key="userInfoSynQry.ack"
            value="update user_info_syn t set t.state = '200' where t.user_info_syn_id = #[map-payload:user_info_syn_id] " />
            
        <!-- 服开回单 -->
        <jdbc:query key="pfOrderQry"
            value="SELECT T.WORK_ORDER_ID workOrderId,
                     T.CUST_ORDER_ID custOrderId,
                     T.STATE state,
                     T.ADD_TIME addTime,
                     T.REMARK remark,
                     T.ORDER_STATE orderState
                FROM RETURN_WORK_ORDER T
               WHERE T.STATE='0' and rownum between 0 and 100" />
         <jdbc:query key="pfOrderQry.ack"
            value="update RETURN_WORK_ORDER set STATE='9' where CUST_ORDER_ID = #[map-payload:custOrderId] "/>
    </jdbc:connector>

    <endpoint name="CustomerOrderItemRequests" address="vm://customerOrderitem.requests" />
    <vm:connector name="vmConnector" queueEvents="true" />

    <model name="jdbcInboundActionModel">
    <!-- 集团改造 -->
    <!-- 激活流程    start -->
      <service name="jdbcService">
            <inbound>
                <jdbc:inbound-endpoint queryKey="orderQry" />
            </inbound>
            <!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused -->
            <pooled-component class="com.tydic.mule.component.OrderProcessComponent">
            <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL"
            maxActive="100" maxIdle="200" maxWait="300" />
            </pooled-component>
            <outbound>
                <pass-through-router>
                    <vm:outbound-endpoint address="vm://orders" />
                </pass-through-router>
            </outbound>
        </service>
        
        <service name="creatXMLService">
               <inbound>
                <vm:inbound-endpoint address="vm://orders" />
            </inbound>
            <!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused -->
            <pooled-component class="com.tydic.mule.component.ActiveXMLBuilderComponent">
            <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL"
            maxActive="600" maxIdle="700" maxWait="800" />
            </pooled-component>
            <outbound>
                <pass-through-router>
                    <vm:outbound-endpoint address="vm://activeXML" />
                </pass-through-router>
            </outbound>
            <threading-profile maxThreadsActive="300" maxThreadsIdle="200" threadWaitTimeout="1000" threadTTL="60000" poolExhaustedAction="RUN"></threading-profile>
        </service>
     
        <service name="sendXMLService">
               <inbound>
                <vm:inbound-endpoint address="vm://activeXML" />
            </inbound>
            <!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused -->
            <pooled-component class="com.tydic.mule.component.ActiveXMLSendComponent">
            <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL"
            maxActive="600" maxIdle="700" maxWait="800" />
            </pooled-component>
            <threading-profile maxThreadsActive="300" maxThreadsIdle="200" threadWaitTimeout="1000" threadTTL="60000"></threading-profile>
        </service>
    <!-- 激活流程    end -->    
        
    <!-- 竣工流程    start -->          
    <service name="jdbcCompletionService">
            <inbound>
                <jdbc:inbound-endpoint queryKey="orderCompletionQry" />
            </inbound>
            <!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused -->
            <pooled-component class="com.tydic.mule.component.OrderCompletionComponent">
            <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL"
            maxActive="100" maxIdle="200" maxWait="300" />
            </pooled-component>
    </service>
    <!-- 竣工流程    end -->        
    
    
    <!-- 用户状态同步下发 -->
    <service name="jdbcUserInfoSynService">
            <inbound>
                <jdbc:inbound-endpoint queryKey="userInfoSynQry" />
            </inbound>
            <!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused -->
            <pooled-component class="com.tydic.mule.component.UserInfoSynXMLBuilderComponent">
            <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL"
            maxActive="600" maxIdle="700" maxWait="800" />
            </pooled-component>
            <outbound>
                <pass-through-router>
                    <vm:outbound-endpoint address="vm://userInfoSynXML" />
                </pass-through-router>
            </outbound>
            <threading-profile maxThreadsActive="200" maxThreadsIdle="100" threadWaitTimeout="1000" threadTTL="60000" poolExhaustedAction="RUN"></threading-profile>
    </service>

    <service name="userInfoSynSendXMLService">
               <inbound>
                <vm:inbound-endpoint address="vm://userInfoSynXML" />
            </inbound>
            <!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused -->
            <pooled-component class="com.tydic.mule.component.UserInfoSynXMLSendComponent">
            <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL"
            maxActive="200" maxIdle="300" maxWait="400" />
            </pooled-component>
    </service>
    <!-- 用户状态同步下发     end-->


    <!-- 服开回单服务 -->
    <service name="jdbcInboundPFReturnService">
        <inbound>
            <jdbc:inbound-endpoint queryKey="pfOrderQry" />
        </inbound>
        <pooled-component class="com.tydic.mule.component.PFReturnXMLBuilderComponent">
        <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL" 
        maxActive="600" maxIdle="700" maxWait="800" />
        </pooled-component>
        <outbound>
             <pass-through-router>
                 <vm:outbound-endpoint address="vm://pfReturnXMLOrders" />
             </pass-through-router>
         </outbound>
         <threading-profile maxThreadsActive="150" maxThreadsIdle="75" threadWaitTimeout="1000" threadTTL="60000" poolExhaustedAction="RUN"></threading-profile>   
    </service>

    <service name="pfReturnSendXMLService">
        <inbound>
            <vm:inbound-endpoint address="vm://pfReturnXMLOrders" />
        </inbound>
        <pooled-component class="com.tydic.mule.component.PFReturnXMLSendComponent">
        <pooling-profile exhaustedAction="WHEN_EXHAUSTED_WAIT" initialisationPolicy="INITIALISE_ALL" 
        maxActive="600" maxIdle="700" maxWait="800" />
        </pooled-component>
        <threading-profile maxThreadsActive="200" maxThreadsIdle="100" threadWaitTimeout="1000" threadTTL="60000" poolExhaustedAction="RUN"></threading-profile>
    </service>
    <!-- 服开回单服务    end -->
    
    <!-- 
        <service name="jdbcInboundActionService">
            <inbound>
                <jdbc:inbound-endpoint queryKey="orderQry" />
            </inbound>
            <component class="com.muleinaction.MuleDataServiceComponent" />
            <outbound>
                <pass-through-router>
                    <vm:outbound-endpoint address="vm://orders" />
                </pass-through-router>
            </outbound>
        </service>
        <service name="ThreeWebService">
            <inbound>
                <vm:inbound-endpoint address="vm://orders" />
            </inbound>
            <component class="com.muleinaction.ThreeWebServiceComponent" />
        </service>
        <service name="ClientWebService">
            <inbound>
                <vm:inbound-endpoint ref="CustomerOrderItemRequests" />
            </inbound>
            <component class="com.muleinaction.ClientCXFWebServiceComponent">
            </component>
        </service>
     -->
    </model>
</mule>

猜你喜欢

转载自hamlzf.iteye.com/blog/1231175