`
sillycat
  • 浏览: 2542946 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

mule2.2.x架构(五)示例学习errorHandle

    博客分类:
  • SOA
阅读更多
mule2.2.x架构(五)示例学习errorHandle

所有的示例文档
http://www.mulesoft.org/display/MULE2INTRO/Examples

本示例参考地址
http://www.mulesoft.org/display/MULE2INTRO/Error+Handler+Example

5.1 从目录扫描文件输出
配置文件error-config.xml,其中很多地方做了些调整
<!-- spring管理的bean -->
<spring:bean id="errorManager"
class="com.sillycat.easymule.errorhandler.services.ErrorManager">
<spring:property name="handlers">
   <spring:list>
    <spring:ref local="fatalHandler" />
    <spring:ref local="defaultHandler" />
    <spring:ref local="businessHandler" />
   </spring:list>
</spring:property>
</spring:bean>
<!-- 默认异常处理,输出到文件 -->
<spring:bean id="defaultHandler"
class="com.sillycat.easymule.errorhandler.handlers.DefaultHandler">
<spring:property name="endpointName" value="ExceptionFileWriter" />
<spring:property name="errorManager">
   <spring:ref local="errorManager" />
</spring:property>
</spring:bean>
<!-- 严重错误异常,输出到邮件 -->
<spring:bean id="fatalHandler"
class="com.sillycat.easymule.errorhandler.handlers.FatalHandler">
<spring:property name="endpointName" value="ExceptionEmailer" />
<spring:property name="errorManager">
   <spring:ref local="errorManager" />
</spring:property>
</spring:bean>
<!-- 业务异常处理,输出到队列 -->
<spring:bean id="businessHandler"
class="com.sillycat.easymule.errorhandler.handlers.BusinessHandler">
<spring:property name="endpointName" value="ExceptionQueue" />
<spring:property name="errorManager">
   <spring:ref local="errorManager" />
</spring:property>
</spring:bean>
<!-- 读取配置properties -->
<context:property-placeholder location="errorhandler/email.properties" />
<jms:activemq-connector name="JMSConnector" />
<!-- 文件链接 -->
<file:connector name="FileConnector" pollingFrequency="1000"
   moveToDirectory="${file.out}" outputPattern="[DATE].xml" />
<email:string-to-email-transformer
   name="StringToEmailMessage" />
<jms:object-to-jmsmessage-transformer
   name="ObjectToJMSMessage" />
<jms:jmsmessage-to-object-transformer
   name="JMSMessageToObject" />
<xm:xml-to-object-transformer name="XMLToExceptionBean"
   returnClass="com.sillycat.easymule.errorhandler.model.ExceptionBean" />
<xm:object-to-xml-transformer name="ExceptionBeanToXML"
   returnClass="java.lang.String" />
<custom-transformer name="ExceptionBeanToErrorMessage"
   class="com.sillycat.easymule.errorhandler.transformer.ExceptionBeanToErrorMessage"
   returnClass="com.sillycat.easymule.errorhandler.model.ErrorMessage" />
<custom-transformer name="ErrorMessageToException"
   class="com.sillycat.easymule.errorhandler.transformer.ErrorMessageToException"
   returnClass="java.lang.Throwable" />
<custom-transformer name="ErrorMessageToExceptionBean"
   class="com.sillycat.easymule.errorhandler.transformer.ErrorMessageToExceptionBean"
   returnClass="com.sillycat.easymule.errorhandler.model.ExceptionBean" />
<model name="errorhandler-test">
<service name="Error Manager">
   <inbound>
    <!-- 读入properties中配置的file.in目录下的*.xml文件 -->
    <inbound-endpoint address="${file.in}"
     transformer-refs="XMLToExceptionBean ExceptionBeanToErrorMessage">
     <file:filename-wildcard-filter
      pattern="*.xml" />
    </inbound-endpoint>
   </inbound>
   <!-- 调用spring的bean处理,默认调用了ErrorManager里面的onException方法,这里还没有搞清楚?有点迷惑 -->
   <pooled-component>
    <prototype-object
     class="com.sillycat.easymule.errorhandler.services.ErrorManager">
     <properties>
      <spring:entry key="handlers">
       <spring:list>
        <spring:ref local="fatalHandler" />
        <spring:ref local="defaultHandler" />
        <spring:ref local="businessHandler" />
       </spring:list>
      </spring:entry>
     </properties>
    </prototype-object>
   </pooled-component>
   <outbound>
    <filtering-router>
     <!--默认错误输出到文件 -->
     <file:outbound-endpoint path="test-data/exceptions"
     outputPattern="Exception-[UUID].xml" transformer-refs="ErrorMessageToExceptionBean ExceptionBeanToXML" />
     <expression-filter evaluator="groovy"
      expression="payload.throwable instanceof org.mule.api.DefaultMuleException" />
    </filtering-router>
    <filtering-router>
     <!-- 输出到邮箱 -->
     <smtp:outbound-endpoint user="${smtp.username}"
      password="${smtp.password}" host="${smtp.host}" port="${smtp.port}"
      to="${email.toAddress}" from="${email.fromAddress}" subject="${email.subject}"
      transformer-refs="ErrorMessageToExceptionBean ExceptionBeanToXML StringToEmailMessage" />
     <expression-filter evaluator="groovy"
      expression="payload.throwable instanceof org.mule.api.lifecycle.FatalException" />
    </filtering-router>
     <!-- 输出到jms队列 -->
    <filtering-router>
     <outbound-endpoint address="jms://exception.queue"
      transformer-refs="ErrorMessageToExceptionBean ExceptionBeanToXML ObjectToJMSMessage" />
     <expression-filter evaluator="groovy"
    expression="payload.throwable instanceof com.sillycat.easymule.errorhandler.exceptions.BusinessException" />
    </filtering-router>
    <custom-catch-all-strategy
     class="org.mule.routing.LoggingCatchAllStrategy" />
   </outbound>
</service>

<service name="Business Error Manager">
   <inbound>
    <!-- 接受jms队列 -->
    <inbound-endpoint address="jms://exception.queue"
     transformer-refs="JMSMessageToObject XMLToExceptionBean ExceptionBeanToErrorMessage" />
   </inbound>
   <!-- 处理队列中的消息 -->
   <component class="com.sillycat.easymule.errorhandler.services.BusinessErrorManager" />
</service>
</model>

对于component和pooled-component还有待认识。
这个示例中有spring bean的配置,同时有邮箱smtp协议,jms等的调用。
分享到:
评论

相关推荐

    Mule2.2 BookStore例子学习

    《Mule2.2 BookStore例子学习》 Mule2.2是一款强大的企业级集成平台,主要用于构建应用程序之间的数据和流程集成。在这个BookStore的例子中,我们将深入理解Mule ESB(Enterprise Service Bus)的核心概念和工作...

    Mule 2.x Getting Started Guider中文

    ### Mule 2.x Getting Started Guide 知识点解析 #### 一、Mule是什么? Mule 是一款基于 Java 的轻量级消息框架,旨在帮助开发者快速、便捷地连接各种应用程序,实现它们之间的数据交换。它支持多种技术栈,如 ...

    GOMPlayer视频播放器x下载V2.2.56.5181绿色中文免费版

    GomPlayer类似于KMplayer,同样也是一款来自韩国播放器,界面精美、功能全面。多媒体播放器GOMPlayer... 以‘查找解码’功能来支持所有视频的播放,在BT或e-mule等P2P网站中下载的影片会经常不能播放,GOM Player以独

    Mule讲解.docx

    Mule讲解.docxMule讲解.docx

    mule 学习.zip

    包含http、cxf、vm、sap、activeMq、ftp、file、poll、Smtp、attachment、melExpression、Java、template节点的使用示例等。

    最高级的多媒体播放工具(GOM Media Player) v2.2.64.5212 简体中文版.zip

    2) 支持BT或e-mule等P2P站点中接收到损坏的文件, 因中断页传送完成的文件, 索引损坏的AVI文件的播放. 3) 想截取的视频画面可以储存为图像 (JPG, BMP)文件, 还可以通过连续截图取功能来实现把影片的场景以帧为单位, ...

    elastic-apm-mule3-agent:适用于Mule 3.x的Elastic APM代理

    弹性APM Mule3代理介绍此插件允许使用Elastic APM监视Mule 3.x组件的应用程序性能。 它提供了一种非侵入性的方式来度量和基准化Mule中的各个流程和步骤,并添加了对Mule组件的应用程序性能监控,以与日志,指标和...

    Mule V.S ServiceMix

    然而,Mule的内部API并未基于JBI标准,而是拥有自己独特的架构设计,这为开发人员提供了更多的自由度和创新空间。 相比之下,ServiceMix的核心在于其JBI基础。作为一款遵循JBI标准的集成平台,ServiceMix旨在提供一...

    mule web service exsample

    【Mule Web Service 示例】 Mule ESB(Enterprise Service Bus)是一种强大的集成平台,它允许开发者轻松地构建和部署分布式应用程序。在这个示例中,我们将深入探讨如何使用Mule来发布Web服务,这是一种允许不同...

    EIP经典案例ESB实践之Mule实现.rar_eip_esb_mule_mule esb

    在“EIP经典案例ESB实践之Mule实现.doc”文档中,你将深入了解到如何使用Mule ESB来实施Load Broker方案,包括具体的配置步骤、示例代码以及最佳实践。通过学习和实践,你可以掌握如何利用Mule ESB优化企业的服务...

    ESB解决方案-mule分享.docx

    五、Mule 的整体结构 Mule 的整体结构包括以下几个部分: * Model:表示托管各个服务的运行时环境。 * Service:是一个独立的服务单元,提供了具体的业务逻辑。 * Transport:是一种消息传递机制,用于传递消息。...

    mule_examples.rar_mule_mule 开发_mule-2.2.1-src

    《Mule ESB实战:基于mule-2.2.1-src的开发示例解析》 Mule ESB,作为一款强大的企业服务总线(Enterprise Service Bus),在集成和连接不同系统方面展现了卓越的能力。本篇文章将围绕"mule_examples.rar_mule_mule...

    Manning.Mule.in.Action.2nd.Edition.Feb.2014 及 源码

    附带的源码是书中示例的实现,读者可以下载并跟随书中步骤操作,这将极大地增强学习体验,加深对Mule ESB工作原理的理解。源码的分析和实践将帮助读者掌握实际开发中的技巧和最佳实践。 Mule ESB的强大之处在于其...

    Mule in Action

    The book closes with a set of chapterson the nuts and bolts of working with Mule. Readers can take Mule farther bylearning techniques for testing, performance tuning, BPM orchestration, andeven a ...

    ESB解决方案-mule分享.pdf

    【企业服务总线(ESB)】是现代企业IT架构中的关键组成部分,它解决了企业内部“信息孤岛”问题,实现了系统间的高效集成。ESB的出现源于企业对信息共享、系统互操作性和软件重用的迫切需求。随着业务规模的扩大和...

    [Mule.in.Action(2nd,2014.2)].David.Dossot.文字版

    mule 是java 实现ESB 的开源工程, 让你实现牛X的企业总线, 第2版的事mule in action....

Global site tag (gtag.js) - Google Analytics