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.

Reply via email to