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

          事情開始想的簡單,可開始做發現沒那么容易。

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

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

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

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

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

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


          趕緊加上,這次LOG走得遠點,可以還是報找不到SCHEMA,徹底暈死了!最后仔仔細細查配置文件,發現我從官網這里,拷貝的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,看出區別了吧?所以對應不上找不著,改了這里,就好了。把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文件相關節:

              <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看也有連接和監聽端口了,可以繼續往前走了:
          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

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


          網站導航:
           
          主站蜘蛛池模板: 当雄县| 洪泽县| 杭州市| 监利县| 胶州市| 平远县| 开化县| 四会市| 卓尼县| 滦南县| 余姚市| 彭泽县| 禹城市| 宾川县| 毕节市| 陆良县| 台山市| 华容县| 克东县| 古交市| 麻栗坡县| 黄梅县| 万年县| 鹤岗市| 甘德县| 双牌县| 专栏| 濮阳县| 通渭县| 武城县| 峨眉山市| 金华市| 凤冈县| 牡丹江市| 甘肃省| 玉门市| 海兴县| 桦甸市| 常山县| 凉城县| 大洼县|