ActiveMQ之订阅恢复策略

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qincidong/article/details/90109664

简介

生产者在某个topic发送了多条消息后,这个时候非持久订阅者才订阅,那么它是不能获取之前生产者发送的信息的。或者,由于网络问题,非持久类型的消费者处于非活跃状态,无法接收到生产者发送的消息。使用消息恢复策略,可以解决上面的问题。ActiveMQ目前支持一个定时或固定大小的恢复缓冲区,在你连接到broker后,在一段时间内的消息会重新发送给订阅者。

ActiveMQ提供的恢复策略

  • FixedSizedSubscriptionRecoveryPolicy
    保留固定字节的消息。

示例:

<policyEntry topic=">">
	<subscriptionRecoveryPolicy>
		<fixedSizedSubscriptionRecoveryPolicy maximumSize="1024"/>
	</subscriptionRecoveryPolicy>
</policyEntry>
  • FixedCountSubscriptionRecoveryPolicy
    保留固定数量的消息

示例:

<policyEntry topic=">">
	<subscriptionRecoveryPolicy>
		<fixedCountSubscriptionRecoveryPolicy maximumSize="100"/>
	</subscriptionRecoveryPolicy>
</policyEntry>
  • LastImageSubscriptionRecoveryPolicy
    保留最后一条记录

示例:

<policyEntry topic=">">
	<subscriptionRecoveryPolicy>
		<lastImageSubscriptionRecoveryPolicy/>
	</subscriptionRecoveryPolicy>
</policyEntry>
  • NoSubscriptionRecoveryPolicy
    禁用回溯,这是默认配置。

示例:

<policyEntry topic=">">
	<subscriptionRecoveryPolicy>
		<noSubscriptionRecoveryPolicy/>
	</subscriptionRecoveryPolicy>
</policyEntry>
  • QueryBasedSubscriptionRecoveryPolicy
    根据查询机制使用回溯

示例:

<policyEntry topic=">">
	<subscriptionRecoveryPolicy>
		<queryBasedSubscriptionRecoveryPolicy query="Color='red' AND Name='tom'"/>
	</subscriptionRecoveryPolicy>
</policyEntry>
  • TimedSubscriptionRecoveryPolicy
    保留指定时间内的消息

示例:

<policyEntry topic=">">
	<subscriptionRecoveryPolicy>
		<timedSubscriptionRecoveryPolicy recoverDuration="60000"/>
	</subscriptionRecoveryPolicy>
</policyEntry>
  • RetainedMessageSubscriptionRecoveryPolicy
    保留ActiveMQ.Retain属性值为true的最后1条消息

示例:

<policyEntry topic=">">
	<subscriptionRecoveryPolicy>
		<retainedMessageSubscriptionRecoveryPolicy/>
	</subscriptionRecoveryPolicy>
</policyEntry>

注意:需要设置retroactive属性为true。即:

Topic topic = session.createTopic("TEST.TOPIC?consumer.retroactive=true");
MessageConsumer consumer = session.createConsumer(topic);

参考:http://activemq.apache.org/subscription-recovery-policy.html
也可以参考:https://www.cnblogs.com/hapjin/p/5649696.html

猜你喜欢

转载自blog.csdn.net/qincidong/article/details/90109664