Spring ActiveMQ 整合(一): 一个简单的demo,测试消息的发送与接收
假如现在我手里有一个很重要的消息的,想要发给一个人,但是很不幸,消息发送失败了。这时候怎么办呢怎么解决这种尴尬的情况,这时候我们可以利用activeMQ的 消息重发机制(RedeliveryPolicy) 来解决这个烦人的问题。
消息重发机制的实现:
1.写RedeliveryPolicy配置文件
既然ctiveMQ提供了消息重发机制(RedeliveryPolicy),那么我们只需要在Spring ActiveMQ 整合(一): 一个简单的demo,测试消息的发送与接收 的基础上, 完善activemq的xml配置文件即可。
[html] view plain copy
print
?
1.
2. <span style=“font-family:’Microsoft YaHei’;”> </span><!– 定义ReDelivery(重发机制)机制 ,重发时间间隔是100毫秒,最大重发次数是3次 http:///shuoit/20140419/339344.html –>
3. <bean id=“activeMQRedeliveryPolicy” class=“org.apache.activemq.RedeliveryPolicy”>
4. <!–是否在每次尝试重新发送失败后,增长这个等待时间 –>
5. <property name=“useExponentialBackOff” value=“true”></property>
6. <!–重发次数,默认为6次 这里设置为1次 –>
7. <property name=“maximumRedeliveries” value=“1”></property>
8. <!–重发时间间隔,默认为1秒 –>
9. <property name=“initialRedeliveryDelay” value=“1000”></property>
10. <!–第一次失败后重新发送之前等待500毫秒,第二次失败再等待500 * 2毫秒,这里的2就是value –>
11. <property name=“backOffMultiplier” value=“2”></property>
12. <!–最大传送延迟,只在useExponentialBackOff为true时有效(V5.5),假设首次重连间隔为10ms,倍数为2,那么第
13. >
14. <property name=“maximumRedeliveryDelay” value=“1000”></property>
15. </bean>
<!-- 定义ReDelivery(重发机制)机制 ,重发时间间隔是100毫秒,最大重发次数是3次 http:///shuoit/20140419/339344.html -->
<bean id="activeMQRedeliveryPolicy" class="org.apache.activemq.RedeliveryPolicy">
<!--是否在每次尝试重新发送失败后,增长这个等待时间 -->
<property name="useExponentialBackOff" value="true"></property>
<!--重发次数,默认为6次 这里设置为1次 -->
<property name="maximumRedeliveries" value="1"></property>
<!--重发时间间隔,默认为1秒 -->
<property name="initialRedeliveryDelay" value="1000"></property>
<!--第一次失败后重新发送之前等待500毫秒,第二次失败再等待500 * 2毫秒,这里的2就是value -->
<property name="backOffMultiplier" value="2"></property>
<!--最大传送延迟,只在useExponentialBackOff为true时有效(V5.5),假设首次重连间隔为10ms,倍数为2,那么第
二次重连时间间隔为 20ms,第三次重连时间间隔为40ms,当重连时间间隔大的最大重连时间间隔时,以后每次重连时间间隔都为最大重连时间间隔。 -->
<property name="maximumRedeliveryDelay" value="1000"></property>
</bean>
这一段配置就是消息重发机制(RedeliveryPolicy)的实现, 每一行都有详细的注释。
2.引用RedeliveryPolicy的配置:
[html] view plain copy
print
?
1. <!–创建连接工厂 –>
2. <bean id=“connectionFactory” class=“org.apache.activemq.ActiveMQConnectionFactory”>
3. <property name=“brokerURL” value=“tcp://localhost:61616”></property>
4. <property name=“redeliveryPolicy” ref=“activeMQRedeliveryPolicy” /> <!– 引用重发机制 –>
5. </bean>
<!--创建连接工厂 -->
<bean id="connectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL" value="tcp://localhost:61616"></property>
<property name="redeliveryPolicy" ref="activeMQRedeliveryPolicy" /> <!-- 引用重发机制 -->
</bean>
在链接工厂里面引入刚才配置好的
RedeliveryPolicy。
配置完成后,消息一旦发送失败,就会按照消息重发机制配置好的重发次数,时间间隔等因素,再次发送。
可以看到配置文件中:<property name=”maximumRedeliveries” value=”1”></property>
设置的重发一次,但是控制台打印出来两个条消息“2”。这就是第一次发送,失败后她又发送了一次,也就是两次。
以上就是消息重发机制的所有实现。