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

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

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

    李順利
    隨筆-50  評論-170  文章-0  trackbacks-0

    本篇文章沒有做過多整理,是以前自己寫的一個小筆記,希望有緣的你讀過有些收獲

    1). weblogic 配置 JMS步驟 
    1.1 創建 JMS 服務器 
    1.2 創建持久性存儲 
    1.3 創建 JMS 模塊


    下圖來自于Weblogic成功配置JMS后的截圖,具體的配置過程網上很多,請參考完成。 

    2). Spring 配置 applicationContext.xml

    applicationContext.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
         http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.0.xsd">
    
        <!-- Use Weblogic JMS -->
        <jee:jndi-lookup id="batch.jmsFactory" jndi-name="jms/batch/connectionFactory">
           <jee:environment>
               java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
               java.naming.provider.url=t3://127.0.0.1:7001
           </jee:environment>
        </jee:jndi-lookup>
        <jee:jndi-lookup id="batch.reqQueue.destination" jndi-name="jms/batch/reqQueue">
           <jee:environment>
               java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory
               java.naming.provider.url=t3://127.0.0.1:7001
           </jee:environment>
        </jee:jndi-lookup>
    
        <!-- JmsTemplate -->
        <bean id="jmsBatchQueueTemplate" class="org.springframework.jms.core.JmsTemplate">
           <property name="pubSubDomain" value="false" />
           <property name="connectionFactory" ref="batch.jmsFactory" />
           <property name="defaultDestination" ref="batch.reqQueue.destination" />
        </bean>
    
        <bean id="batchSenderAndReceiver" class="org.usc.jms.SenderAndReceiver">
           <property name="jmsTemplate" ref="jmsBatchQueueTemplate" />
        </bean>
    
        <bean id="batchReceiverQueueListenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
           <property name="concurrentConsumers" value="1" />
           <property name="connectionFactory" ref="batch.jmsFactory" />
           <property name="destination" ref="batch.reqQueue.destination" />
           <property name="messageListener" ref="batchSenderAndReceiver" />
        </bean>
    
    </beans>
    

    3). 測試代碼

    SenderAndReceiver.java
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
    package org.usc.jms;
    
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageListener;
    import javax.jms.TextMessage;
    
    import org.springframework.jms.core.JmsTemplate;
    
    /**
     *
     * @author ShunLi
     */
    public class SenderAndReceiver implements MessageListener{
        private JmsTemplate jmsTemplate;
    
        public JmsTemplate getJmsTemplate() {
           return jmsTemplate;
        }
    
        public void setJmsTemplate(JmsTemplate jmsTemplate) {
           this.jmsTemplate = jmsTemplate;
        }
    
        public void sendMessage() {
           jmsTemplate.convertAndSend("Hello world!(" + System.currentTimeMillis() + ")");
        }
    
        public void onMessage(Message msg) {
           try {
               System.out.println("msg is "+((TextMessage)msg).getText());
           } catch (JMSException e) {
               e.printStackTrace();
           }
        }
    }
    
    
        public static void main(String[] args) {
           ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
           SenderAndReceiver jmsQueueTemplate = (SenderAndReceiver) ctx.getBean("batchSenderAndReceiver");
           jmsQueueTemplate.sendMessage();
        }
    

    4). 注意點 
    4.1. java.naming.factory.initial=weblogic.jndi.WLInitialContextFactory 需要在classpath 下面加上 weblogic.jar 
    4.2. SenderAndReceiver 即是Sender 又是 Listener(Recevier) 
    4.3. 大致處理流程是這樣的

    Sender send msg -> Queue/Topic -> 觸發Listener(異步),Listener onMessage 處理 收到的 Message。   
    

    p.s. 測試代碼不太優美,SenderAndReceiver 既作為了一個消息發布者,又作為了消息接收者,實踐中,盡量分開

    5). 補充知識 
    傳遞域:點對點(PTP)消息傳遞域和發布/訂閱消息傳遞域。 
    點對點消息傳遞域的特點如下:

    每個消息只能有一個消費者。
    消息的生產者和消費者之間沒有時間上的相關性。無論消費者在生產者發送消息的時候是否處于運行狀態,它都可以提取消息。
    

    發布/訂閱消息傳遞域的特點如下:

    每個消息可以有多個消費者。
    生產者和消費者之間有時間上的相關性。訂閱一個主題的消費者只能消費自它訂閱之后發布的消息。
    

    JMS規范允許客戶創建持久訂閱,這在一定程度上放松了時間上的相關性要求。持久訂閱允許消費者消費它在未處于激活狀態時發送的消息。



    博客中的一些下載已經放到了百度云了,請根據需要下載。【點我去百度云下載】

    最后弱弱地說一下,如果可以的話,轉載請提供出處( ),謝謝。
    posted on 2012-12-16 14:28 李順利 閱讀(1879) 評論(0)  編輯  收藏 所屬分類: Tips
    主站蜘蛛池模板: 日本免费人成在线网站| 亚洲日韩在线中文字幕综合| 国产AV无码专区亚洲AV毛网站 | 特级毛片aaaa免费观看| 免费看黄福利app导航看一下黄色录像 | 国产一级高青免费| 在线观看免费视频一区| a级毛片毛片免费观看久潮喷| 成人片黄网站色大片免费观看APP| 成全高清在线观看免费| 久久aa毛片免费播放嗯啊| 中文字幕在线观看免费视频| 免费观看无遮挡www的小视频| 国产精品视频永久免费播放| 在线观看免费大黄网站| 国产成人青青热久免费精品| www.亚洲精品.com| 久久精品国产亚洲沈樵| 亚洲综合婷婷久久| 456亚洲人成影院在线观| 亚洲一本一道一区二区三区| 老司机亚洲精品影院在线观看| 免费在线观看一区| 国产免费爽爽视频在线观看| 久久午夜无码免费| 无码人妻一区二区三区免费| 日本免费一区二区三区最新| 亚洲综合色在线观看亚洲| 亚洲Av永久无码精品三区在线| 亚洲导航深夜福利| 日韩国产精品亚洲а∨天堂免| 无码精品人妻一区二区三区免费| 男的把j放进女人下面视频免费| 国产91色综合久久免费分享| 国产精品视_精品国产免费| 国产亚洲色婷婷久久99精品91| 亚洲视频在线免费播放| 亚洲av日韩综合一区久热| 久久毛片免费看一区二区三区| 91免费在线播放| 免费国产高清视频|