ActiveMQ消息存储-Broker缓存消息

通过subscription recovery policy实现,该策略决定什么类型的消息需要缓存,怎样缓存,缓存多少时间。

 

1. 怎样缓存

    ActiveMQ Message Broker给使用到的每个Topic在内存中缓存消息,但有两种类型的Topic是不支持 

    的:temporary  topic和advisory topic. 同时也不支持缓存Queue中的消息。

 

    Broker缓存的消息仅仅分发给一个Topic Consumer,如果该Consumer重新激活;但是不分发给

    DurableTopic Subscriber. Topic Consumer被创建时需要在Destination上注:

    consumer.retroactive=true,例如:

import org.apache.activemq.ActiveMQConnectionFactory;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.Session;
import javax.jms.Topic;

public void createRetroactiveConsumer() throws JMSException{
	
	ConnectionFactory fac = new ActiveMQConnectionFactory();
	Connection connection = fac.createConnection();
	connection.start();
	Session session =
	connection.createSession(false,Session.AUTO_ACKNOWLEDGE);
	Topic topic =
	session.createTopic("TEST.TOPIC?consumer.retroactive=true");
	
	MessageConsumer consumer = session.createConsumer(topic);
}

2.  ActiveMQ subscription recovery policies(114-115)

     THE ACTIVEMQ FIXED SIZE SUBSCRIPTION RECOVERY POLICY

     THE ACTIVEMQ FIXED COUNT SUBSCRIPTION RECOVERY POLICY

     THE ACTIVEMQ QUERY-BASED SUBSCRIPTION RECOVERY POLICY

     THE ACTIVEMQ TIMED SUBSCRIPTION RECOVERY POLICY

     THE ACTIVEMQ LAST IMAGE SUBSCRIPTION RECOVERY POLICY

     THE ACTIVEMQ NO SUBSCRIPTION RECOVERY POLICY

3.  Subscription recovery policy配置

<?xml version="1.0" encoding="UTF-8"?>
<beans>
	<broker brokerName="test-broker" persistent="true"
		useShutdownHook="false" deleteAllMessagesOnStartup="true"
		xmlns="http://activemq.apache.org/schema/core">
		<transportConnectors>
			<transportConnector uri="tcp://localhost:61635" />
		</transportConnectors>
		<destinationPolicy>
			<policyMap>
				<policyEntries>
					<policyEntry topic="Topic.FixedSizedSubs.>">
						<subscriptionRecoveryPolicy>
							<fixedSizeSubscriptionRecoveryPolicy
								maximumSize="2000000" useSharedBuffer="false" />
						</subscriptionRecoveryPolicy>
					</policyEntry>
					<policyEntry topic="Topic.LastImageSubs.>">
						<subscriptionRecoveryPolicy>
							<lastImageSubscriptionRecoveryPolicy />
						</subscriptionRecoveryPolicy>
					</policyEntry>
					<policyEntry topic="Topic.NoSubs.>">
						<subscriptionRecoveryPolicy>
							<noSubscriptionRecoveryPolicy />
						</subscriptionRecoveryPolicy>
					</policyEntry>
					<policyEntry topic="Topic.TimedSubs.>">
						<subscriptionRecoveryPolicy>
							<timedSubscriptionRecoveryPolicy
								recoverDuration="25000" />
						</subscriptionRecoveryPolicy>
					</policyEntry>
				</policyEntries>
			</policyMap>
		</destinationPolicy>
	</broker>
</beans>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值