<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Jhonney的專欄

       ----人見人愛
    隨筆 - 49, 文章 - 1, 評論 - 23, 引用 - 0
    數據加載中……

    Spring和Message Bean的整合

    在日常的開發中,我們會經常使用MQ異步傳遞數據。在Java編程中,我們針對MQ使用JMS和Message Driven Bean。在EJB 2.0中引入了Message Bean,這也是EJB 2.0的得意之處,并且備受歡迎。在Spring中,我們引入JmsTemplate簡化了MQ的客戶操作,可以很方便地發布Message,但是Spring并未提供相關實現Message Bean的例子。如果Spring能夠以POJO方式實現Message Bean,那將更加方便。我們知道EJB中的Message Bean雖然簡單,但是步驟比較繁雜,你需要實現MessageDrivenBean, MessageListener接口,還需要設置EJB的配置信息等,然后是deploy,搞得很復雜。如果Spring能夠提供POJO Message Bean,那就不一樣了。你可以使用Spring的各種特性如IoC、AOP等等。在這里我們將Spring下的Message Bean稱之為MDP(Message-Driven POJO),這也方便下面的引用。

    在進行下一步操作之前,我們需要先進行環境設定,首先需要選擇一款消息中間件軟件,這里我們選擇ActiveMQ。ActiveMQ是一款開源的消息中間件軟件,實現了JMS 1.1規范,包含很多的特性,下面就是ActiveMQ的結構圖:



    同時我們需要使用SpringFramework框架,當前版本為1.2.5。準備好所有的開發包,我們要在IntelliJ IDEA創建一個新的項目,包含一個普通的模塊即可,然后設定一下classpath即可,關于項目的詳細信息,請下載附件中IntelliJ IDEA項目文件。

    MDP的機制很簡單,就是完成對指定的Message Queue或Topic的監聽,所以我們需要在Spring的配置文件進行設定:

    1 設定ConnectionFactory,這里我們采用嵌入式方式運行ActiveMQ:


    <bean id="connectionFactory" class="org.activemq.ActiveMQConnectionFactory"> <property name="brokerURL" value="vm://localhost"/>
    <property name="useEmbeddedBroker" value="true"/>
    </bean>

    2 設定MDP,我們只需創建一個普通的JavaBean,然后實現MessageListener,最后在Spring配置文件中進行設定。


    <bean id="HelloMDP" class="net.jetmaven.HelloMDP"/>

    3 將MDP和Queue或Topic關聯起來,以下是針對ActiveMQ的設定。其中HelloMDP是對MDP名稱的引用。


    <bean id="activeMQContainer" class="org.activemq.jca.JCAContainer">
    <property name="workManager">
    <bean id="workManager" class="org.activemq.work.SpringWorkManager"/>
    </property>
    <property name="resourceAdapter">
    <bean id="activeMQResourceAdapter" class="org.activemq.ra.ActiveMQResourceAdapter">
    <property name="serverUrl" value="vm://localhost"/>
    </bean>
    </property>
    </bean>
    <bean id="HelloQueueConsumer" factory-method="addConnector" factory-bean="activeMQContainer">
    <property name="activationSpec">
    <bean class="org.activemq.ra.ActiveMQActivationSpec">
    <property name="destination" value="Hello.Queue"/>
    <property name="destinationType" value="javax.jms.Queue"/>
    </bean>
    </property>
    <property name="ref" value="HelloMDP"/>
    </bean>

    4 設定JmsTemplate,方便JMS客戶段操作。


    <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
    <property name="defaultDestinationName" value="Hello.Queue"/>
    <property name="connectionFactory" ref="connectionFactory"/>
    </bean>

    接下來我們需要創建一個Spring的JUnit測試用例,測試我們設定的功能,這里我們只需設定Spring配置文件位置,然后在測試方法中引用JmsTemplate,發送Message進行測試。


    public class SpringTest extends AbstractDependencyInjectionSpringContextTests
    {
    protected String[] getConfigLocations()
    {
    return new String[]{"classpath*:applicationContext.xml"};
    }
    public void testSendMessage() throws Exception
    {
    JmsTemplate jmsTemplate = (JmsTemplate) applicationContext.getBean("jmsTemplate");
    jmsTemplate.send(new MessageCreator()
    {
    public Message createMessage(Session session) throws JMSException
    {
    MapMessage message=session.createMapMessage(); message.setString("name","Jacky");
    return message;
    }
    });
    }
    }

    當你運行這個測試時,你會發現測試的結果。 總結:通過以上的設定,我們就可以完成Spring下的Message Driven Bean的設定,同EJB的MDB相比,MDP更加簡單。在上例中,我們以JVM方式啟動ActiveMQ,這對于單個應用(如web應用)是非常實用的,通過這種方式可以異步發送消息,這對應用中異步發送email,特定任務等,這種方式非常簡單,原來比較復雜的問題現在可以很快解決啦。

    posted on 2007-06-20 02:38 Jhonney 閱讀(633) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 综合一区自拍亚洲综合图区| 亚洲av永久无码精品天堂久久| 国产精品亚洲lv粉色| 成年午夜视频免费观看视频| 丁香婷婷亚洲六月综合色| 免费在线观看h片| 亚洲午夜一区二区电影院| 欧洲乱码伦视频免费| 亚洲男人天堂2018av| 日韩免费视频网站| 立即播放免费毛片一级| 亚洲XX00视频| 国产特黄一级一片免费 | 日韩成人在线免费视频| 亚洲私人无码综合久久网| 日本免费人成黄页在线观看视频 | 中文字幕在线观看亚洲视频| 成人五级毛片免费播放| 国产成人人综合亚洲欧美丁香花 | 精品久久久久久久免费人妻 | 亚洲视频一区二区三区| 久久精品国产免费观看三人同眠| 亚洲国产中文在线二区三区免| 毛片在线看免费版| 黄网站色成年片大免费高清| 亚洲精品国产品国语在线 | 毛片免费在线视频| 免费中文字幕视频| 亚洲a一级免费视频| 国产h视频在线观看免费| 国产亚洲精彩视频| 国产亚洲人成无码网在线观看| 18禁成人网站免费观看| 精品久久久久久亚洲综合网| 亚洲精品无码永久中文字幕| h片在线免费观看| 羞羞漫画在线成人漫画阅读免费| 亚洲人成在线播放网站| 成年轻人网站色免费看| 一级毛片人与动免费观看| 1区1区3区4区产品亚洲|