風(fēng)人園

          弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
          隨筆 - 99, 文章 - 181, 評(píng)論 - 56, 引用 - 0
          數(shù)據(jù)加載中……

          ActiveMq 的安裝及整合spring 使用


          1、下載 安裝
          在windows xp 上,直接解壓就可以使用
          在2003 上,還需要配置一下,缺一個(gè)文件,否則無法啟動(dòng)

          2、mq 配置
          默認(rèn)使用 文件持久化的方式,無需進(jìn)行配置,只需要通過代碼,標(biāo)記消息為持久化即可

          //設(shè)置 消息為 ‘持久化’ 消息,隊(duì)列服務(wù)器重啟后,會(huì)重新載入
          message.setJMSDeliveryMode(DeliveryMode.PERSISTENT);
          message.setString("context", context);

          2、整合spring
          mq的spring 配置文件, 此處三個(gè)bean
           mq 服務(wù)器配置,sender ,監(jiān)聽器
          完成系統(tǒng)的消息發(fā)送和接收

          <bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
                  
          <property name="brokerURL" value="tcp://10.10.1.31:61616" />
              
          </bean>
              
              
          <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
                  
          <property name="connectionFactory" ref="connectionFactory" />
              
          </bean>
               
              
          <!--  ============================  消息發(fā)送 ============================== -->
              
              
          <!-- ecp.sd.log -->
              
          <bean id="logDestination" class="org.apache.activemq.command.ActiveMQQueue">
                  
          <constructor-arg value="km.wlog"/>
              
          </bean>
              
              
          <bean id="logMessageSender" class="com.chint.mq.sender.LogMessageSender">
                  
          <property name="destination" ref="logDestination" />
                  
          <property name="jmsTemplate" ref="jmsTemplate" />
              
          </bean>
              
              
          <!--=============================  隊(duì)列監(jiān)聽器  ==========================  -->
              
              
          <!-- 日志 隊(duì)列監(jiān)聽器 
              
          <bean id="logContextListener" class="com.chint.mq.listener.LogContextListener">
              
          </bean>
              
              
          <bean class="org.springframework.jms.listener.SimpleMessageListenerContainer">
                  
          <property name="connectionFactory" ref="connectionFactory"/>
                  
          <property name="destinationName" value="km.wlog"/>
                  
          <property name="messageListener" ref="logContextListener"/>
              
          </bean>
              
          -->

          消息發(fā)送者
          @Service
          public class LogMessageSender extends BaseMessageSender{
              
              
          public void sendMessage(final String context) {
                  jmsTemplate.send(destination, 
          new MessageCreator(){

                      @Override
                      
          public Message createMessage(Session session) throws JMSException {
                          MapMessage message 
          = session.createMapMessage();
                          
                          
          //設(shè)置 消息為 ‘持久化’ 消息,隊(duì)列服務(wù)器重啟后,會(huì)重新載入
                          message.setJMSDeliveryMode(DeliveryMode.PERSISTENT);
                          message.setString(
          "context", context);
                          
                          logger.info(
          "KM INFO [LogMessageSender] send message context ({})", context);
                          
                          
          return message;
                      }

                      
                  }
          );
              }


          }

          消息接受者
          /**
           * 
          @author wxf
           *
           
          */

          public class LogContextListener extends BaseContextListener implements MessageListener{

              @Autowired
              
          private WorkLogManager workLogManager;
              
              @Override
              
          public void onMessage(Message arg) {
                  
          if(arg instanceof MapMessage) {
                      MapMessage message 
          = (MapMessage)arg;
                      
                      
          try {
                          String context 
          = message.getString("context");
                          logger.info(
          "KM INFO [LogContextListener] get message context ({})", context);   
                      }
           catch (JMSException e) {
                          
          throw JmsUtils.convertJmsAccessException(e);
                      }

                  }
           else {
                      System.out.println(arg.toString());
                  }

              }


          }


          以上就完成了 MQ的使用,比較簡(jiǎn)單。

          通過spring使用mq從代碼來講還是很簡(jiǎn)單的,但是mq的性能可能需要額外的調(diào)整一下才能達(dá)到最佳的狀態(tài),特別是大數(shù)量的情況下。

          僅作記錄

          posted on 2011-11-09 09:25 風(fēng)人園 閱讀(633) 評(píng)論(0)  編輯  收藏 所屬分類: MQ


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 翁牛特旗| 吉水县| 纳雍县| 林芝县| 安仁县| 新竹县| 黄大仙区| 宁国市| 宽甸| 肥东县| 丰城市| 赤城县| 张家口市| 望奎县| 石渠县| 菏泽市| 长海县| 共和县| 巴塘县| 洞头县| 自治县| 南城县| 桐梓县| 富锦市| 淳化县| 元氏县| 阿巴嘎旗| 凭祥市| 竹北市| 灌云县| 南康市| 稻城县| 凯里市| 大竹县| 白玉县| 五指山市| 阳西县| 丹棱县| 建始县| 铜山县| 汉川市|