隨筆-124  評論-194  文章-0  trackbacks-0

          事情開始想的簡單,可開始做發(fā)現(xiàn)沒那么容易。

          開始只是想能夠找一個具有CALLBACK功能的REMOTING RPC式的POJO方案。一搜就是LINGO,啥話也不說了,整!

          可沒想到LINGO依賴于4.0.2的ACTIVEMQ,且POM里的MAVEN路徑也沒更新成ACTIVEMQ搬家后的地方(從CODEHAUSE搬到APACHE了)。去改它的POM指向4.1.1,后來不行又找了4.0.2來自己手工安裝上。

          這個過程中,發(fā)現(xiàn)了其實直接用SPRING+MQ的方案也不錯,這里有個方案。再看看LINGO的用戶論壇,門可羅雀,算了,轉攻MQ吧,別涂簡單了。好像工作量就是多寫一個消息到POJO的CONVERTER,也可以達到直接發(fā)POJO。

          沒想到,這邊也不是很順,不斷報解析不到http://activemq.org/config/1.0schemaLocation,我按照這里說的,自己寫了META-INF里的spring.schema,順便學了下,這個文件就是告訴SPRING到本地找XSD文件的。

          暈!可還是報這個錯,我想最新版應該沒事吧,又找來MQ的5.0 SNAPSHOT版,還是一樣,最后我把SPRING的LOG4J級別設成DEBUG,發(fā)現(xiàn)是報找不到XBEAN的解析HANDLER:

              <dependency>
                <groupId>org.apache.xbean</groupId>
                <artifactId>xbean-spring</artifactId>
                 <version>3.2</version>
              </dependency>  


          趕緊加上,這次LOG走得遠點,可以還是報找不到SCHEMA,徹底暈死了!最后仔仔細細查配置文件,發(fā)現(xiàn)我從官網(wǎng)這里,拷貝的SCHEMALOCATION:http://activemq.apache.org/snapshot-schema/activemq-core-5.0-SNAPSHOT.xsd,而解開實際的MQ的JAR包里,看相應的meta-inf/spring.schema文件,又是http://activemq.apache.org/schema/activemq-core-5.0.xsd,看出區(qū)別了吧?所以對應不上找不著,改了這里,就好了。把JMS配置及POM相關部分貼上來以明志,這才是開始呀!


          <?xml version="1.0" encoding="UTF-8" ?>
               
          <beans 
            
          xmlns="http://www.springframework.org/schema/beans" 
            xmlns:amq
          ="http://activemq.org/config/1.0"
            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://activemq.org/config/1.0 http://activemq.apache.org/schema/activemq-core-5.0.xsd"
          >
                  
           
              
          <!--  embedded ActiveMQ Broker -->
              
          <amq:broker useJmx="false" persistent="false">
                  
          <amq:transportConnectors>
                      
          <amq:transportConnector uri="tcp://localhost:6116"/>
                  
          </amq:transportConnectors>
              
          </amq:broker>

              
          <!--  ActiveMQ connectionFactory  -->
              
          <amq:connectionFactory id="jmsConnectionFactory" brokerURL="tcp://localhost:6116"/>

              
          <!--  ActiveMQ destinations  -->
              
          <amq:queue name="destination" physicalName="org.apache.activemq.spring.Test.spring.embedded"/>

              
          <!--  Spring JmsTemplate config -->
              
          <bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
                  
          <property name="connectionFactory">
                      
          <!--  lets wrap in a pool to avoid creating a connection per send -->
                      
          <bean class="org.springframework.jms.connection.SingleConnectionFactory">
                          
          <property name="targetConnectionFactory" ref="jmsConnectionFactory"/>
                      
          </bean>
                  
          </property>
                  
          <!-- custom MessageConverter -->
                  
          <property name="messageConverter" ref="orderMessageConverter"/>
              
          </bean>

              
          <!--  OrderMessage converter  -->
              
          <bean id="statusConverter" class="com.exchangebit.nms.magic.mq.ConvertAddHostData"/>

              
          <!-- POJO which send Message uses  Spring JmsTemplate -->
              
          <bean id="statusProducer" class="com.exchangebit.nms.magic.mq.StatusProducer">
                  
          <property name="template" ref="jmsTemplate"/>
                  
          <property name="destination" ref="destination"/>
              
          </bean>

              
          <!--  Message Driven POJO (MDP) -->
              
          <bean id="messageListener" class="org.springframework.jms.listener.adapter.MessageListenerAdapter">
                  
          <constructor-arg>
                      
          <bean class="com.exchangebit.nms.magic.mq.StatusConsumer">
                      
          </bean>
                  
          </constructor-arg>
                  
          <property name="messageConverter" ref="statusConverter"/>
              
          </bean>

              
          <bean id="listenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer">
                  
          <property name="connectionFactory" ref="jmsConnectionFactory"/>
                  
          <property name="destination" ref="destination"/>
                  
          <property name="messageListener" ref="messageListener"/>
              
          </bean>
          </beans>



          POM文件相關節(jié):

              <dependency>
                
          <groupId>org.springframework</groupId>
                
          <artifactId>spring</artifactId>
                
          <version>2.0.6</version>
              
          </dependency>

              
          <dependency>
                
          <groupId>org.apache.activemq</groupId>
                
          <artifactId>activemq-core</artifactId>
                
          <version>5.0-SNAPSHOT</version>
              
          </dependency>
                
              
          <dependency>
                
          <groupId>org.apache.xbean</groupId>
                
          <artifactId>xbean-spring</artifactId>
                
          <version>3.2</version>
              
          </dependency>     

          看下面日志,應該啟動成功,netstat看也有連接和監(jiān)聽端口了,可以繼續(xù)往前走了:
          9266 INFO main  [org.apache.activemq.broker.BrokerService] - Using Persistence Adapter: MemoryPersistenceAdapter
          9282 INFO main  [org.apache.activemq.broker.BrokerService] - ActiveMQ 5.0-SNAPSHOT JMS Message Broker (localhost) is starting
          9282 INFO main  [org.apache.activemq.broker.BrokerService] - For help or more information please see: http://activemq.apache.org/
          2007-11-24 14:57:41 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
          信息: Creating Service {http://magic.nms.exchangebit.com/}NotifyServiceImplService from class com.exchangebit.nms.magic.NotifyServiceImpl
          2007-11-24 14:57:43 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
          信息: Creating Service {http://nodesvc.magic.nms.exchangebit.com/}NodeSvcImplService from class com.exchangebit.nms.magic.nodesvc.NodeSvcImpl
          9813 INFO main  [org.apache.activemq.transport.TransportServerThreadSupport] - Listening for connections at: tcp://hehe:6116
          9829 INFO main  [org.apache.activemq.broker.TransportConnector] - Connector tcp://localhost:6116 Started
          9844 INFO main  [org.apache.activemq.broker.BrokerService] - ActiveMQ JMS Message Broker (localhost, ID:hehe-1857-1195887464218-0:0) started
          posted on 2007-11-24 15:29 我愛佳娃 閱讀(4043) 評論(0)  編輯  收藏 所屬分類: ActiveMQ

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


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 行唐县| 赤峰市| 大港区| 宣武区| 馆陶县| 渭南市| 克什克腾旗| 横峰县| 图木舒克市| 汝南县| 龙门县| 乌恰县| 繁昌县| 永嘉县| 乐陵市| 威信县| 靖边县| 冀州市| 溧阳市| 乌海市| 澄城县| 茶陵县| 山东省| 民权县| 公主岭市| 汾西县| 马公市| 廉江市| 拜泉县| 兴业县| 永康市| 油尖旺区| 东源县| 化德县| 南乐县| 同德县| 芒康县| 苏尼特左旗| 浏阳市| 乐业县| 黔西县|