<div>Hi ,</div>
<div> </div>
<div>Please find the attached code for Consumer.java.</div>
<div> </div>
<div>public class SingleConsumer{</div>
<div> </div>
<div> public static void main(String args[]) {</div>
<div> </div>
<div> </div>
<div> ConnectionParameters params = new ConnectionParameters();<br> params.setUsername(janusProperties.getProperty("rabbitmq_userName").trim());<br> params.setPassword(janusProperties.getProperty("rabbitmq_password").trim());<br>
params.setVirtualHost("/");<br> params.setRequestedHeartbeat(0);<br> ConnectionFactory factory = new ConnectionFactory(params);<br> com.rabbitmq.client.Connection connRMQ = factory.newConnection(janusProperties.getProperty("rabbitmq_server_ip").trim(), Integer.parseInt(janusProperties.getProperty("rabbitmq_server_port").trim())); </div>
<div> </div>
<div> </div>
<div> Channel channel = connRMQ.createChannel();</div>
<div><br> String exchangeName = janusProperties.getProperty("rabbitmq_exchangeName").trim();<br> String queueName = janusProperties.getProperty("rabbitmq_queueName").trim();<br> String routingKey = janusProperties.getProperty("rabbitmq_routingKey").trim();</div>
<div> </div>
<div> QueueingConsumer consumer = new QueueingConsumer(channel);<br> channel.basicConsume(queueName, true, consumer);</div>
<div> QueueingConsumer.Delivery delivery;</div>
<div> while (!runInfinite) </div>
<div> {</div>
<div> try {</div>
<div> </div>
<div> delivery = consumer.nextDelivery();<br> <br> } catch (InterruptedException ie) {<br> log.debug("Problem in Deliverying the message");<br>
continue;<br> }</div>
<div> </div>
<div> /* 1 . Do some operation on the consumed data which will take 2 -3 sec of time.</div>
<div> 2. if above operation is success than continue to receive next data</div>
<div> 3. if above operation fails than resend the message back to the queue( Consumer acting as Producer) using channel.basicPublish</div>
<div> </div>
<div> */</div>
<div> channel.basicPublish(exchangeName, routingKey, true, false, MessageProperties.PERSISTENT_TEXT_PLAIN, bao.toByteArray());</div>
<div> </div>
<div>}</div>
<div> </div>
<div>}<br> }<br></div>
<div> </div>
<div>Memory leakage is because of operating on the data which take times. In that time the QueueingDelivery objects are created as many as the the messages sent by the Producer.</div>
<div><br>Thanks,</div>
<div>Seema</div>
<div class="gmail_quote">On Tue, Feb 2, 2010 at 5:01 PM, Gustavo Aquino <span dir="ltr"><<a href="mailto:aquino.gustavo@gmail.com">aquino.gustavo@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">Seema,
<div><br></div>
<div>You can't control when your GC will run, if you declare this objects into loop and don't are using hash tables or maps to reutilize it, so it will be eligible to GC automatically, because your life cycle over in next loop.</div>
<div><br></div>
<div>Today I have a consumer in Java consuming about 1.000 m/s and never used more than 15Mb and this objects never go throw eden memory, if you don't forward this objects created inside consumer loop, this objects will be automatic eligible for GC but GC don't run immediately you need to wait.</div>
<div><br></div>
<div>Can you post your consumer code ?</div>
<div><br></div>
<div><br><br>
<div class="gmail_quote">
<div>
<div></div>
<div class="h5">On Tue, Feb 2, 2010 at 3:48 AM, Seema Biradar <span dir="ltr"><<a href="mailto:seemasbiradar@gmail.com" target="_blank">seemasbiradar@gmail.com</a>></span> wrote:<br></div></div>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<div>
<div></div>
<div class="h5">
<div>Hi All,<br><br>i tried the rabbit MQ with Producer and Consumer Program.<br><br>in Consumer side i am getting the all the Message, but the following objects<br><br>com.rabbitmq.client.QueueingConsumer.Delivery<br>com.rabbitmq.client.Envelop<br>
com.rabbitmq.client.AMQP.BasicProperties<br><br>are created for each message and not garbage collected immediately after consuming.<br><br><strong>in Producer.java<br></strong><br>used basic publish as shown below.<br><br>
channel.basicPublish(exchangeName, routingKey, true, false, MessageProperties.PERSISTENT_TEXT_PLAIN, bao.toByteArray()) ;<br><br><br><strong>Consumer.java<br></strong><br>channel.basicConsume(queueName, true, consumer);<br>
<br>with no-acknowledgement <strong>true</strong>.<br><br>Please let me know, how to make the above object eligible for garbage collection immediately after consuming.</div>
<div>for Consumer program The Heap Memory allocated is more , as this is performace issue</div>
<div> </div>
<div> </div>
<div>Thanks,</div>
<div>Seema</div><br></div></div>_______________________________________________<br>rabbitmq-discuss mailing list<br><a href="mailto:rabbitmq-discuss@lists.rabbitmq.com" target="_blank">rabbitmq-discuss@lists.rabbitmq.com</a><br>
<a href="http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss" target="_blank">http://lists.rabbitmq.com/cgi-bin/mailman/listinfo/rabbitmq-discuss</a><br><br></blockquote></div><br></div></blockquote></div>
<br>