There is something I don't understand: In here http://incubator.apache.org/activemq/what-happens-with-a-fast-producer-and-slow-consumer.html http://incubator.apache.org/activemq/what-happens-with-a-fast-producer-and-slow-consumer.html they are saing that a slow consumer will cause the producer to slow down also, but if there is no "built-in" limitation on the queue size/capacity, then how can it be done? What will stop the queue from growing to (almost) infinity?
Eichberger, German wrote: > > We solved this by asking the queue every time before we inserted > something how many message are there, e.g. in your producer do the > following: > > public static synchronized void initJMX(long port) { > try { > JMXServiceURL url = new > JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:"+port+"/jmxrmi") > ; > JMXConnector conn = > JMXConnectorFactory.connect(url); > mbs = conn.getMBeanServerConnection(); > } catch (Exception e) { > log.error("Exception obtaining #messages in queue:" + > e.getMessage()); > } > > > } > > public long getQueueSize(ActiveMQQueue destination) throws > Exception{ > try { > String name = "org.apache.activemq" + > ":Type=Queue,Destination=" + > destination.getQueueName() + ",BrokerName=localhost"; > > ObjectName queueViewMBeanName = new ObjectName(name); > > if (mbs.isRegistered(queueViewMBeanName)) { > > QueueViewMBean queue = (QueueViewMBean) > MBeanServerInvocationHandler.newProxyInstance(mbs, queueViewMBeanName, > QueueViewMBean.class, true); > > > long size = queue.getQueueSize(); > log.info("Queue: " + queueViewMBeanName + " now has: " + > size + " message(s)"); > return size; > } else { > log.error("Bean not registered"); > throw new Exception("Bean not registered"); > } > } catch (Exception e) { > log.error("Exception obtaining #messages in queue:" + > e.getMessage()); > throw new Exception(e); > } > } > > Then you call the function in the produicer and decide if you can send > the message... > > You also need to enable JMX on your JVM. > > German > > > > -----Original Message----- > From: itayke [mailto:[EMAIL PROTECTED] > Sent: Tuesday, January 30, 2007 4:49 AM > To: activemq-users@geronimo.apache.org > Subject: How to limit a queue capacity > > > Hi, > > I like to limit the capacity of a queue (lets say to maximum of 5 > messages). > > 1. How is it done? > 2. what shall happen to a producer that will try to send the 6th message > to > this queue? > > Thanks > -- > View this message in context: > http://www.nabble.com/How-to-limit-a-queue-capacity-tf3142214.html#a8708 > 859 > Sent from the ActiveMQ - User mailing list archive at Nabble.com. > > > -- View this message in context: http://www.nabble.com/How-to-limit-a-queue-capacity-tf3142214.html#a8724272 Sent from the ActiveMQ - User mailing list archive at Nabble.com.