風人園

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

          ActiveMq 的安裝及整合spring 使用


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

          2、mq 配置
          默認使用 文件持久化的方式,無需進行配置,只需要通過代碼,標記消息為持久化即可

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

          2、整合spring
          mq的spring 配置文件, 此處三個bean
           mq 服務器配置,sender ,監聽器
          完成系統的消息發送和接收

          <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>
               
              
          <!--  ============================  消息發送 ============================== -->
              
              
          <!-- 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>
              
              
          <!--=============================  隊列監聽器  ==========================  -->
              
              
          <!-- 日志 隊列監聽器 
              
          <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>
              
          -->

          消息發送者
          @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();
                          
                          
          //設置 消息為 ‘持久化’ 消息,隊列服務器重啟后,會重新載入
                          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的使用,比較簡單。

          通過spring使用mq從代碼來講還是很簡單的,但是mq的性能可能需要額外的調整一下才能達到最佳的狀態,特別是大數量的情況下。

          僅作記錄

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


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


          網站導航:
           
          主站蜘蛛池模板: 南和县| 固始县| 武威市| 贵阳市| 南投市| 崇仁县| 峨眉山市| 巫山县| 铜山县| 南漳县| 富锦市| 永泰县| 房产| 乡城县| 饶河县| 革吉县| 镇康县| 东宁县| 墨竹工卡县| 三穗县| 平湖市| 夏邑县| 和政县| 大安市| 南丹县| 岗巴县| 潼关县| 秦皇岛市| 石城县| 天全县| 大足县| 轮台县| 洛隆县| 美姑县| 若尔盖县| 靖西县| 平远县| 竹山县| 农安县| 平谷区| 平武县|