風人園

          弱水三千,只取一瓢,便能解渴;佛法無邊,奉行一法,便能得益。
          隨筆 - 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 風人園 閱讀(639) 評論(0)  編輯  收藏 所屬分類: MQ


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


          網站導航:
           
          主站蜘蛛池模板: 阿拉善右旗| 长春市| 阿图什市| 宜黄县| 神池县| 高雄市| 蕲春县| 香港| 滕州市| 丁青县| 皋兰县| 巴林左旗| 肇源县| 高州市| 开封县| 余干县| 三河市| 怀安县| 革吉县| 会东县| 红安县| 兰溪市| 曲阳县| 巴青县| 寿光市| 彩票| 信丰县| 九龙城区| 鄄城县| 股票| 图们市| 若尔盖县| 林西县| 秭归县| 山东| 图木舒克市| 建阳市| 渝北区| 宝兴县| 北海市| 湄潭县|