`
longgangbai
  • 浏览: 7338805 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Mule ESB 学习笔记(19)Mule和RSS的整合

阅读更多

定时扫描特定目录的rss文件:

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:rss="http://www.mulesoft.org/schema/mule/rss"
      xmlns:file="http://www.mulesoft.org/schema/mule/file"
      xmlns:test="http://www.mulesoft.org/schema/mule/test"
      xsi:schemaLocation="
               http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
               http://www.mulesoft.org/schema/mule/rss http://www.mulesoft.org/schema/mule/rss/current/mule-rss.xsd
               http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
               http://www.mulesoft.org/schema/mule/test http://www.mulesoft.org/schema/mule/test/current/mule-test.xsd">

    <file:connector name="fileConnector" streaming="false"/>

    <flow name="feedSplitterConsumer">
        <file:inbound-endpoint  path="/e:/download/" pollingFrequency="100" >
            <file:filename-wildcard-filter pattern="*.rss"/>
            <rss:feed-splitter/>
            
        </file:inbound-endpoint>
         <echo-component/>
        <component>
            <singleton-object class="com.easyway.esb.mule.rss.EntryReceiver"/>
        </component>
    </flow>

</mule>

 

轮询特定的路径:

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:rss="http://www.mulesoft.org/schema/mule/rss"
      xmlns:http="http://www.mulesoft.org/schema/mule/http"
      xsi:schemaLocation="
               http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
               http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
               http://www.mulesoft.org/schema/mule/rss http://www.mulesoft.org/schema/mule/rss/current/mule-rss.xsd">

    <http:polling-connector name="PollingHttpConnector" pollingFrequency="1000" discardEmptyContent="false"/>

    <flow name="feedConsumer">
        <http:inbound-endpoint address="http://topmanopensource.iteye.com/rss"
                               connector-ref="PollingHttpConnector" />
        <rss:feed-splitter/>
        <rss:entry-last-updated-filter/>
    </flow>
</mule>

 

 

定期从jms发送rss文件信息,并读取:

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:atom="http://www.mulesoft.org/schema/mule/atom"
      xmlns:jms="http://www.mulesoft.org/schema/mule/jms"
      xmlns:rss="http://www.mulesoft.org/schema/mule/rss"
      xmlns:spring="http://www.springframework.org/schema/beans"
      xmlns:test="http://www.mulesoft.org/schema/mule/test"
      xsi:schemaLocation="
               http://www.mulesoft.org/schema/mule/rss http://www.mulesoft.org/schema/mule/rss/current/mule-rss.xsd      
               http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
               http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
               http://www.mulesoft.org/schema/mule/atom http://www.mulesoft.org/schema/mule/atom/current/mule-atom.xsd
               http://www.mulesoft.org/schema/mule/jms http://www.mulesoft.org/schema/mule/jms/current/mule-jms.xsd
               http://www.mulesoft.org/schema/mule/test http://www.mulesoft.org/schema/mule/test/current/mule-test.xsd">

   <jms:activemq-connector name="jmsConnectorNoRedelivery" maxRedelivery="-1" />
   
   <spring:beans>
     <spring:bean  id="feedConsumer" class="com.easyway.esb.mule.rss.FeedReceiver" />
       <spring:bean  id="entryReceiver" class="com.easyway.esb.mule.rss.EntryReceiver" />
   </spring:beans>
    
    <flow name="feedConsumerFlow">
        <jms:inbound-endpoint queue="feed.in" connector-ref="jmsConnectorNoRedelivery"/>

        <component>
            <spring-object  bean="feedConsumer"/>
        </component>
    </flow>

    <flow name="feedSplitterConsumerFlow">
        <jms:inbound-endpoint queue="feed.split.in" exchange-pattern="one-way" connector-ref="jmsConnectorNoRedelivery">
            <rss:feed-splitter/>
        </jms:inbound-endpoint>
        <component>
           <spring-object  bean="entryReceiver"/>
        </component>
    </flow>

</mule>

 

 

手动生成rss文件:

<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns="http://www.mulesoft.org/schema/mule/core"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns:rss="http://www.mulesoft.org/schema/mule/rss"
      xmlns:vm="http://www.mulesoft.org/schema/mule/vm"
      xsi:schemaLocation="
       http://www.mulesoft.org/schema/mule/vm http://www.mulesoft.org/schema/mule/vm/current/mule-vm.xsd
       http://www.mulesoft.org/schema/mule/rss http://www.mulesoft.org/schema/mule/rss/current/mule-rss.xsd
       http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd">

    <rss:feed-last-updated-filter lastUpdate="2009-10-01 13:00:00" acceptWithoutUpdateDate="false" name="feedFilter"/>

    <rss:object-to-feed-transformer name="ObjectToFeed"/>

    <flow name="flowTest">
        <vm:inbound-endpoint path="feed.in">
            <rss:feed-splitter/>
            <rss:entry-last-updated-filter lastUpdate="2009-10-01"/>
               <rss:object-to-feed-transformer/>
        </vm:inbound-endpoint>
        <echo-component/>
    </flow>
</mule>

 

 

package com.easyway.esb.mule.rss;

import org.mule.api.annotations.param.Payload;

import com.sun.syndication.feed.synd.SyndEntry;

import java.util.concurrent.atomic.AtomicInteger;
/**
 * 
 * @author longgangbai
 *
 */
public class EntryReceiver
{
    private AtomicInteger count = new AtomicInteger(0);

    public void readEntry(@Payload SyndEntry entry) throws Exception
    {
        count.getAndIncrement();
    }

    public int getCount()
    {
        return count.get();
    }
}

 

 

package com.easyway.esb.mule.rss;

import org.mule.api.annotations.param.Payload;

import com.sun.syndication.feed.synd.SyndFeed;

import java.util.concurrent.atomic.AtomicInteger;
/**
 * 
 * @author longgangbai
 *
 */
public class FeedReceiver
{
    private AtomicInteger count = new AtomicInteger(0);

    public void readFeed(@Payload SyndFeed feed) throws Exception
    {
        count.set(feed.getEntries().size());            
    }

    public int getCount()
    {
        return count.get();
    }
}

 

 测试代码:

/*
 * Copyright (c) EASYWAY 2011 All Rights Reserved
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.easyway.esb.mule.rss;
import java.io.File;

import org.apache.commons.io.FileUtils;
import org.mule.api.MuleContext;
import org.mule.api.client.MuleClient;
import org.mule.api.context.MuleContextFactory;
import org.mule.config.spring.SpringXmlConfigurationBuilder;
import org.mule.context.DefaultMuleContextFactory;
/**
 * <p>鍔熻兘鎻忚堪,璇ラ儴鍒嗗繀椤讳互涓枃鍙ュ彿缁撳熬銆�p>
 *
 * 鍒涘缓鏃ユ湡 2013-8-26<br>
 * @author  $Author$<br>
 * @version $Revision$ $Date$
 * @since   3.0.0
 */
public class MuleRssMain {
    

    	public static void main(String[] args) {
    	     try {
    		       String configFile = "jms-rss-consume.xml";
    		        System.setProperty("mule.verbose.exceptions","true");
    		        String[] configFileArr = new String[] {configFile };
    		        MuleContextFactory muleContextFactory = new DefaultMuleContextFactory();
    		        MuleContext muleContext = muleContextFactory
    		                .createMuleContext(new SpringXmlConfigurationBuilder(configFileArr));
    		        muleContext.start();
    		        
    			    MuleClient client = muleContext.getClient();
    		        FeedReceiver component = (FeedReceiver)muleContext.getRegistry().get("feedConsumer");
    		        
    		        String path=MuleRssMain.class.getClassLoader().getResource("./sample-feed.rss").getFile();
    		       
    		        String feed=FileUtils.readFileToString(new File(path));
    		        client.dispatch("jms://feed.in", feed, null);
    		        Thread.sleep(2000);
    		        System.out.println(component.getCount());
    		        
    		         client = muleContext.getClient();
    		         component = (FeedReceiver)muleContext.getRegistry().get("feedConsumer");
    		        client.dispatch("jms://feed.split.in", feed, null);
    		        Thread.sleep(5000);                
    		        System.out.println(component.getCount());
    		} catch (Exception e) {
    			// TODO: handle exception
    			e.printStackTrace();
    		}
    		}

    	}

 

 

分享到:
评论

相关推荐

    mule -esb 源码

    `mule-spring-configuration.dtd`和`mule-configuration.dtd`是Mule ESB的XML配置文件的DTD(文档类型定义),它们规定了XML配置文件的结构和元素。Spring是Mule ESB的核心组件之一,负责管理对象的生命周期和依赖...

    Mule ESB手册-中文版

    根据提供的文件内容,以下是关于Mule ESB手册-中文版的知识点: 1. Mule ESB简介 ...通过这些知识点的学习,可以加深对Mule ESB的使用方法的理解,并通过实例加深对ESB概念的理解,对新手来说非常有帮助。

    Mule ESB 学习笔记(13)CSV数据文件到数据库

    在本篇“Mule ESB 学习笔记(13)CSV数据文件到数据库”中,我们将探讨如何使用Mule ESB(Enterprise Service Bus,企业服务总线...通过实践和学习,我们可以更好地掌握Mule ESB在实际项目中的应用,提升我们的IT技能。

    MULE ESB-4.1企业版运行环境

    MULE ESB(Mule Enterprise Service Bus)是Anypoint Platform的核心组件,它是一个强大的、全面集成的企业服务总线(ESB),专为构建、部署和管理API和集成解决方案而设计。MULE ESB-4.1是MuleSoft公司推出的企业版...

    ESB原理及Mule ESB实践

    ### ESB原理及Mule ESB实践 ...综上所述,ESB和Mule ESB是现代IT架构中不可或缺的部分,它们为企业提供了一种灵活、高效的服务集成方案。无论是理论层面还是实际应用,掌握ESB原理及Mule ESB实践都是非常有价值的。

    mule IDE (mule ESB)

    Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...

    MuleESB帮助文档

    五、学习和使用Mule ESB "MuleESB3"这个文件名可能指的是Mule ESB的第三个主要版本。在该版本中,用户可以期待更完善的特性和改进。对于初学者,建议首先通过官方文档了解Mule ESB的基本概念和工作原理,然后使用Any...

    MuleEsb开源框架简介.pdf

    Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、Web Services、JDBC、...

    MuleESB_3.0_中文教程

    通过《Mule ESB 3.0 中文教程》,你将能够掌握Mule ESB的基础知识,理解其核心概念,并具备开发和管理Mule ESB应用的能力。随着学习的深入,你还将了解到更多高级特性和实践技巧,为你的IT职业生涯添加一项重要的...

    MuleESB3.0中文教程

    - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise Integration Patterns)原则构建,支持多种传输协议(如file, FTP, ...

    mule esb开发手册

    《Mule ESB 开发手册》是一份详尽的指南,专为希望深入了解并掌握 Mule ESB(Enterprise Service Bus)技术的...通过深入学习和实践,开发者可以充分利用 Mule ESB 的强大功能,实现高效、可靠的企业级集成解决方案。

    mule esb cookbook 随书源码

    《Mule ESB Cookbook随书源码》是一个与Mule ESB相关的实践指南,它包含了大量实例代码,旨在帮助读者深入理解和应用Mule ESB这一开源企业服务总线(Enterprise Service Bus)。Mule ESB是业界广泛采用的ESB解决方案...

    mule esb 的简单介绍

    Mule ESB,全称Mule Enterprise Service Bus,是一个开源的企业服务总线系统,旨在促进不同应用程序和服务之间的数据交换和集成。Mule的核心设计是基于轻量级的Java平台,尤其是J2EE 1.4标准,使得它能够在各种企业...

    mule esb 项目 例子 入门

    本教程将带您入门Mule ESB项目,通过实例学习其核心概念和操作。 首先,我们需要理解ESB的基本概念。ESB作为一个中间件,它的主要作用是提供一种松耦合的方式,使得各个系统之间可以通过标准接口进行通信,而不是...

    Mule ESB开发工具以及相匹配的英文手册和中文手册(翻译狗充值翻译)

    `APDevFundamentals3.8_studentManual_20jun2016【翻译狗www.fanyigou.com】.pdf` 文件表明了用户可能利用这个平台将英文版的手册翻译成中文,以便于国内的开发者理解和学习。 总结起来,这个压缩包提供的资源对于...

    MULE ESB-4.1社区办运行环境

    MULE ESB-4.1社区版是Mulesoft为开发者提供的免费版本,它包含了基本的ESB功能,适合学习、开发和小规模项目部署。 在MULE ESB-4.1社区版中,主要包含以下几个关键组件和概念: 1. **AnyPoint Studio**: AnyPoint ...

    mule ESB 3 user guider

    总结来说,《Mule ESB 3用户指南》为用户提供了一个全面的、步骤详细的、实践导向的指导,从基础的配置、服务集成到开发、测试、文档编写和云服务集成,覆盖了使用Mule ESB进行企业级集成应用开发的各个阶段。

    MuleESB学习笔记

    MuleESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。MuleESB支持集成现有系统而无论其底层采用何种技术,如JMS、WebServices、JDBC、HTTP以及其他...

Global site tag (gtag.js) - Google Analytics