001 /** 002 * 003 * Copyright 2004 Protique Ltd 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 * 017 **/ 018 019 package org.activemq; 020 021 import org.apache.commons.logging.Log; 022 import org.apache.commons.logging.LogFactory; 023 024 025 /** 026 * Defines the pretech message policies for different types of consumers 027 * @version $Revision: 1.1.1.1 $ 028 */ 029 public class ActiveMQPrefetchPolicy { 030 private static final Log log = LogFactory.getLog(ActiveMQPrefetchPolicy.class); 031 private static final int MAX_PREFETCH_SIZE = (Short.MAX_VALUE -1); 032 private int queuePrefetch; 033 private int queueBrowserPrefetch; 034 private int topicPrefetch; 035 private int durableTopicPrefetch; 036 037 038 /** 039 * Initialize default prefetch policies 040 */ 041 public ActiveMQPrefetchPolicy() { 042 this.queuePrefetch = 1000; 043 this.queueBrowserPrefetch = 500; 044 this.topicPrefetch = 1000; 045 this.durableTopicPrefetch = 100; 046 } 047 048 /** 049 * @return Returns the durableTopicPrefetch. 050 */ 051 public int getDurableTopicPrefetch() { 052 return durableTopicPrefetch; 053 } 054 055 /** 056 * @param durableTopicPrefetch The durableTopicPrefetch to set. 057 */ 058 public void setDurableTopicPrefetch(int durableTopicPrefetch) { 059 this.durableTopicPrefetch = getMaxPrefetchLimit(durableTopicPrefetch); 060 } 061 062 /** 063 * @return Returns the queuePrefetch. 064 */ 065 public int getQueuePrefetch() { 066 return queuePrefetch; 067 } 068 069 /** 070 * @param queuePrefetch The queuePrefetch to set. 071 */ 072 public void setQueuePrefetch(int queuePrefetch) { 073 this.queuePrefetch = getMaxPrefetchLimit(queuePrefetch); 074 } 075 076 /** 077 * @return Returns the queueBrowserPrefetch. 078 */ 079 public int getQueueBrowserPrefetch() { 080 return queueBrowserPrefetch; 081 } 082 083 /** 084 * @param queueBrowserPrefetch The queueBrowserPrefetch to set. 085 */ 086 public void setQueueBrowserPrefetch(int queueBrowserPrefetch) { 087 this.queueBrowserPrefetch = getMaxPrefetchLimit(queueBrowserPrefetch); 088 } 089 090 /** 091 * @return Returns the topicPrefetch. 092 */ 093 public int getTopicPrefetch() { 094 return topicPrefetch; 095 } 096 097 /** 098 * @param topicPrefetch The topicPrefetch to set. 099 */ 100 public void setTopicPrefetch(int topicPrefetch) { 101 this.topicPrefetch = getMaxPrefetchLimit(topicPrefetch); 102 } 103 104 private int getMaxPrefetchLimit(int value) { 105 int result = Math.min(value, MAX_PREFETCH_SIZE); 106 if (result < value) { 107 log.warn("maximum prefetch limit has been reset from " + value + " to " + MAX_PREFETCH_SIZE); 108 } 109 return result; 110 } 111 }