`

mule & seda的学习三

    博客分类:
  • SOA
阅读更多
以竣工服务为例

package com.tydic.mule.component;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.Map;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import com.tydic.framework.utils.spring.SpringContextUtils;
public class OrderCompletionComponent {

public SqlMapClientTemplate ibatisTemplate = (SqlMapClientTemplate) SpringContextUtils
.getBean("sqlMapClientTemplate");

// <jdbc:inbound-endpoint queryKey="orderCompletionQry" />
@SuppressWarnings("unchecked")
public Object process(Object vm) throws Exception {
Long start = System.currentTimeMillis();
Map<String, Object> map = (Map<String, Object>) vm;
BigDecimal cust_order_id = (BigDecimal) map.get("cust_order_id");
Map<String,Object> paraMap = new HashMap<String,Object>();
paraMap.put("cust_order_id", cust_order_id);
paraMap.put("status", "900");
paraMap.put("state", "2002");
ibatisTemplate.update("OrderAndActive.updateCustomerOrder", paraMap);
ibatisTemplate.update("OrderAndActive.updateOrderItemByCustOrderID", paraMap);
System.out.println("********OrderCompletionComponent******"+(System.currentTimeMillis()-start));
return null;
}

}


<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="100"
dataSource-ref="dataSource">
<jdbc:query key="orderQry"
value="select distinct (t.cust_order_id)
from customer_order t, order_item o
where t.status = '040'
and t.cust_order_id = o.cust_order_id
and o.status = '1501'
and o.order_item_cd = 'T20'
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 order by a.add_time" />
<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: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_FAIL" initialisationPolicy="INITIALISE_ALL"
maxActive="100" maxIdle="100" maxWait="150" />
</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_FAIL" initialisationPolicy="INITIALISE_ALL"
maxActive="200" maxIdle="200" maxWait="200" />
</pooled-component>
<outbound>
<pass-through-router>
<vm:outbound-endpoint address="vm://activeXML" />
</pass-through-router>
</outbound>
</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_FAIL" initialisationPolicy="INITIALISE_ALL"
maxActive="300" maxIdle="300" maxWait="300" />
</pooled-component>
</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_FAIL" initialisationPolicy="INITIALISE_ALL"
maxActive="100" maxIdle="100" maxWait="150" />
</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_FAIL" initialisationPolicy="INITIALISE_ALL"
maxActive="100" maxIdle="100" maxWait="150" />
</pooled-component>
<outbound>
<pass-through-router>
<vm:outbound-endpoint address="vm://userInfoSynXML" />
</pass-through-router>
</outbound>
</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_FAIL" initialisationPolicy="INITIALISE_ALL"
maxActive="200" maxIdle="200" maxWait="200" />
</pooled-component>
</service>


<!--
<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>
<!-- 用户状态同步下发 --><!-- 集团改造 --><!-- 激活流程 start --><!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused --><!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused --><!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused --><!-- 激活流程 end --><!-- 竣工流程 start --><!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused --><!-- 竣工流程 end --><!-- 用户状态同步下发 --><!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused --><!-- 使用对象池技术,在系统启动时就会先创建一批对象(本配置为50个)放在对象池里,等发起调用时,系统不会创建新的对象,because the component will reused --><!-- <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> -->

分享到:
评论

相关推荐

    MuleEsb开源框架简介.pdf

    7. 使用基于 SEDA 处理模型的高度可伸缩的企业服务器。 8. 强大的基于 EIP 模式的事件路由机制等。 Mule ESB 的整体结构图: Mule 通过 Transports/Connectors 与外围的异构系统连接,提供 Routing(路由)、...

    mule(java)开发简介

    #### 三、Mule 架构 - **Transport(传输层)**:由多个组件构成,负责消息的发送和接收。 - **Connector(连接器)**:负责发送和接收消息的具体操作。 - **Endpoints(端点)**:消息的发送点和接收点。 - **...

    mule esb 的简单介绍

    3. **异步、同步和请求-响应处理**:Mule ESB支持在任何传输协议上处理异步、同步和请求-响应模式的事件,提高了系统的灵活性和效率。 4. **Web服务支持**:Mule ESB能够处理基于Axis或Glue的Web服务,支持SOAP和...

    MuleEsb开源框架简介

    无论是对于初学者还是经验丰富的开发者,Mule ESB都提供了广泛的学习资源,如《Mule in Action》书籍、官方文档以及DZone Refcardz等,帮助用户深入了解并掌握这一强大的集成框架。随着技术的不断进步,Mule ESB持续...

    MULE开发文档

    MULE架构的三大部分——Mule Manager、Model和UMO Components,各司其职,共同构成了一个高效的集成环境。Mule Manager位于中心,它负责管理连接器、端点和转换器等关键组件,确保服务实例的正常运行。Model则是一个...

    应用集成开源框架MULE的源代码

    Mule 的核心是一个基于SEDA的服务容器,该容器管理被称为通用消息对象(Universal Message Objects /UMO)的服务对象,而这些对象都是POJO。所有UMO和其他应用之间的通信都是通过消息端点(message endpoint)来进行...

    MULE IN ACTION

    Mule采用了SEDA(Staged Event-Driven Architecture)模型,这是一种事件驱动的架构模式,通过将应用程序分成多个阶段来实现高吞吐量和可伸缩性。 8. 强大的基于EIP模式的事件路由机制: 事件驱动模式(EIP)允许...

    Mule是一个企业服务总线(ESB)消息框架

    3.支持任何传输之上的异步,同步和请求响应事件处理机制. 4.支持Axis或者Glue的Web Service. 5.灵活的部署结构[Topologies]包括Client/Server, P2P, ESB 和Enterprise Service Network. 6.与Spring 框架集成:可...

    ESB解决方案-mule分享.docx

    三、主流商业和开源 ESB 产品 目前市场上有多种 ESB 产品,包括 Oracle 的商业 ESB 产品、Progress 的商业 ESB 产品、TIBCO 的商业 ESB 产品、Mule 的开源 ESB 框架、WSO2 的开源 ESB 框架等。这些产品都提供了...

    SOA企业级业务组件

    #### 三、GWESB项目基于Mule ESB业务组件的实现及价值 **3.1 业务组件模型** - **定义**: GWESB项目中的业务组件模型是基于Mule ESB的,旨在封装特定的业务功能,提高组件的复用性和灵活性。 **3.2 业务组件发布...

Global site tag (gtag.js) - Google Analytics