基于 spring 4.3.16.RELEASE和spring-rabbit 1.7.8.RELEASE
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.7.8.RELEASE</version>
</dependency>
对于队列参数值的类型需要小心,必须单独指定,具体可见配置死信队列ttl超时时间出的方式
<?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:rabbit="http://www.springframework.org/schema/rabbit"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/rabbit http://www.springframework.org/schema/rabbit/spring-rabbit-1.7.xsd">
<bean id="jsonMessageConverter" class="org.springframework.amqp.support.converter.Jackson2JsonMessageConverter" />
<rabbit:connection-factory
id="connectionFactory"
host="127.0.0.1"
port="5672"
username="dy"
password="dyqy0326"
virtual-host="qy"
publisher-confirms="true"
/>
<rabbit:admin connection-factory="connectionFactory" />
<!-- 给模板指定转换器 --><!-- mandatory必须设置true,return callback才生效 -->
<rabbit:template id="amqpTemplate" connection-factory="connectionFactory"
confirm-callback="confirmCallBackListener"
return-callback="returnCallBackListener"
mandatory="true"
/>
<rabbit:queue name="CONFIRM_TEST" />
<rabbit:direct-exchange name="DIRECT_EX" id="DIRECT_EX" >
<rabbit:bindings>
<rabbit:binding queue="CONFIRM_TEST" />
</rabbit:bindings>
</rabbit:direct-exchange>
<!-- 死信队列 -->
<rabbit:queue name="dead-letter-queue">
<rabbit:queue-arguments>
<entry key="x-message-ttl">
<value type="java.lang.Long">5000</value>
</entry>
<entry key="x-dead-letter-exchange" value="common-exchange" />
<entry key="x-dead-letter-routing-key" value="common-queue" />
</rabbit:queue-arguments>
</rabbit:queue>
<!-- 死信队列转发到的普通队列 -->
<rabbit:queue name="common-queue" />
<rabbit:direct-exchange name="common-exchange"
durable="false" auto-delete="false" id="common-exchange">
<rabbit:bindings>
<rabbit:binding queue="common-queue" />
</rabbit:bindings>
</rabbit:direct-exchange>
<!-- 配置consumer, 监听的类和queue的对应关系 -->
<rabbit:listener-container
connection-factory="connectionFactory" acknowledge="manual" >
<rabbit:listener queues="CONFIRM_TEST" ref="receiveConfirmTestListener" />
<rabbit:listener queues="common-queue" ref="receiveConfirmTestListener" />
</rabbit:listener-container>
</beans>