晕啊晕:ActiveMQ, Spring, Lingo
开始只是想能够找一个具有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.0的这里说的,自己写了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相关部分贴上来以明志,这才是开始呀!
[www.iocblog.net 来源]
<?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>[www.iocblog.net 来源]
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文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。