MQ的预取机制

1.设置方式

 

 1)通过URL 

 

ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory(ActiveMQConnection.DEFAULT_USER,
                    ActiveMQConnection.DEFAULT_PASSWORD,
                    "failover:(tcp://" + ip + ":" + port + ")?jms.prefetchPolicy.queuePrefetch=0");
            
 

 

2)通过ActiveMQConnectionFactory的API

        //// 设置prefetch 值(多个消费者有用)
             ActiveMQPrefetchPolicy p = new ActiveMQPrefetchPolicy();
             p.setQueuePrefetch(1);
            
             connectionFactory.setPrefetchPolicy(p);
             

3)通过ActiveMQQueue

           ActiveMQQueue queue = new ActiveMQQueue("TEST.QUEUE?consumer.prefetchSize=10");
            Destination destination = session.createQueue("test");

 

2.参数设置

MQ的预取机制

 

3.链接

http://activemq.apache.org/what-is-the-prefetch-limit-for.html

  

 4.注意点

    如果没有设置,默认1000,对于慢速消费者,会每次recieve的时候增加内存,可能会把内存撑爆。