Spring ActiveMQ 整合(二): 重发机制

Spring ActiveMQ 整合(一): 一个简单的demo,测试消息的发送与接收    

       假如现在我手里有一个很重要的消息的,想要发给一个人,但是很不幸,消息发送失败了。这时候怎么办呢怎么解决这种尴尬的情况,这时候我们可以利用activeMQ的  消息重发机制(RedeliveryPolicy)  来解决这个烦人的问题。


消息重发机制的实现:

1.写RedeliveryPolicy配置文件

      既然ctiveMQ提供了消息重发机制(RedeliveryPolicy),那么我们只需要在Spring ActiveMQ 整合(一): 一个简单的demo,测试消息的发送与接收  的基础上, 完善activemq的xml配置文件即可。

  1.       
  2. <span style=“font-family:’Microsoft YaHei’;”>      </span><!– 定义ReDelivery(重发机制)机制 ,重发时间间隔是100毫秒,最大重发次数是3次 http://www.kuqin.com/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.             二次重连时间间隔为 20ms,第三次重连时间间隔为40ms,当重连时间间隔大的最大重连时间间隔时,以后每次重连时间间隔都为最大重连时间间隔。 –>  
  14.         <property name=“maximumRedeliveryDelay” value=“1000”></property>  
  15.     </bean>  
   
      <!-- 定义ReDelivery(重发机制)机制 ,重发时间间隔是100毫秒,最大重发次数是3次 http://www.kuqin.com/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的配置:

  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”。这就是第一次发送,失败后她又发送了一次,也就是两次。


以上就是消息重发机制的所有实现。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值