Spring 3.1.2 集成RabbitMQ失败
Spring 3.1.2集成 RabbitMQ,在不添加rabbit:listener-container监听配置前,项目可以正常启动,经过测试可以正常发送消息。后添加了监听配置,再次启动项目时出现报错: java.lang.NoClassDefFoundError: org/springframework/util/backoff/BackOff 希望请教一下大家该怎么解决
自己解决的时候,大部分的文档说是因为Spring版本太低,需要升级Spring。由于系统比较古老,升级Spring版本影响太多,故不太行得通。下面贴上jar版本和XML相关配置
jar版本
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
xmlns:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.2.xsd ">
<description>Spring公共配置 </description>
<!-- 配置连接工厂 -->
<rabbit:connection-factory id="rabbitConnectionFactory"
host="${rabbit.host}" port="${rabbit.port}" username="${rabbit.username}" password="${rabbit.password}" />
<!-- 定义mq管理 -->
<rabbit:admin connection-factory="rabbitConnectionFactory" />
<!-- 消息对象json转换类 -->
<bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" />
<!--创建消息队列模板-->
<rabbit:template id="rabbitTemplate" connection-factory="rabbitConnectionFactory"
exchange="gloria.queue" message-converter="jsonMessageConverter" />
<!--定义queue 说明:durable:是否持久化 exclusive: 仅创建者可以使用的私有队列,断开后自动删除 auto_delete: 当所有消费客户端连接断开后,是否自动删除队列-->
<rabbit:queue name="oms_1" durable="true" auto-delete="false" exclusive="false" />
<rabbit:queue name="oms_2" durable="true" auto-delete="false" exclusive="false" />
<rabbit:queue name="oms_3" durable="true" auto-delete="false" exclusive="false" />
<rabbit:queue name="oms_4" durable="true" auto-delete="false" exclusive="false" />
<rabbit:queue name="oms_5" durable="true" auto-delete="false" exclusive="false" />
<rabbit:queue name="oms_6" durable="true" auto-delete="false" exclusive="false" />
<!-- 定义direct exchange,绑定oms_1 -->
<rabbit:direct-exchange name="gloria.queue" durable="true" auto-delete="false">
<rabbit:bindings>
<rabbit:binding queue="oms_1" > </rabbit:binding>
<rabbit:binding queue="oms_2" > </rabbit:binding>
<rabbit:binding queue="oms_3" > </rabbit:binding>
<rabbit:binding queue="oms_4" > </rabbit:binding>
<rabbit:binding queue="oms_5" > </rabbit:binding>
<rabbit:binding queue="oms_6" > </rabbit:binding>
</rabbit:bindings>
</rabbit:direct-exchange>
<!-- 消息接收者 -->
<bean id="messageReceiver" class="com.mipo.amqp.consumer.TestListener"></bean>
<!-- queue litener 观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
<rabbit:listener-container connection-factory="rabbitConnectionFactory" message-converter="jsonMessageConverter"
acknowledge="manual" concurrency= "2" >
<rabbit:listener queues="oms_1" ref="messageReceiver"/>
</rabbit:listener-container>
<bean class="com.mipo.amqp.config.AmqpConfig" id="amqpConfig" init-method="init" lazy-init="false">
</bean>
</beans>