Seema,<div><br></div><div>I think that your performance problem is in piece of code that you dropped, this dropped code probably are reusing Rabbitmq objects references, and this guys are going to Old memory and will be collected in different time, this cause your feeling about &quot;Rabbit object aren&#39;t�eligible�to GC&quot;.</div>
<div><br></div><div>Take a look about how you are using Rabbit objects inside your code. Try to use only the message like a TO.</div><div><br></div><div>About�republish message, If you are publishing it in the same queue that you consume, you can just get message, process it and if OK remove it from queue using ..ask�instead�publish it in the end of your flow.</div>
<div><br></div><div>I don&#39;t saw any performance problems in this piece of code posted here.<br><br><div class="gmail_quote">On Tue, Feb 2, 2010 at 10:29 AM, Seema Biradar <span dir="ltr">&lt;<a href="mailto:seemasbiradar@gmail.com">seemasbiradar@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><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(&quot;rabbitmq_userName&quot;).trim());<br>����������� params.setPassword(janusProperties.getProperty(&quot;rabbitmq_password&quot;).trim());<br>

����������� params.setVirtualHost(&quot;/&quot;);<br>����������� params.setRequestedHeartbeat(0);<br>����������� ConnectionFactory factory = new ConnectionFactory(params);<br>����������� com.rabbitmq.client.Connection connRMQ = factory.newConnection(janusProperties.getProperty(&quot;rabbitmq_server_ip&quot;).trim(), Integer.parseInt(janusProperties.getProperty(&quot;rabbitmq_server_port&quot;).trim()));�</div>


<div>�</div>
<div>�</div>
<div>����������� Channel channel = connRMQ.createChannel();</div>
<div><br>����������� String exchangeName = janusProperties.getProperty(&quot;rabbitmq_exchangeName&quot;).trim();<br>����������� String queueName = janusProperties.getProperty(&quot;rabbitmq_queueName&quot;).trim();<br>����������� String routingKey = janusProperties.getProperty(&quot;rabbitmq_routingKey&quot;).trim();</div>


<div>�</div>
<div>������������QueueingConsumer consumer = new QueueingConsumer(channel);<div class="im"><br>����������� channel.basicConsume(queueName, true, consumer);</div></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(&quot;Problem in Deliverying the message&quot;);<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 class="im">
<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><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><div></div><div class="h5">
<div class="gmail_quote">On Tue, Feb 2, 2010 at 5:01 PM, Gustavo Aquino <span dir="ltr">&lt;<a href="mailto:aquino.gustavo@gmail.com" target="_blank">aquino.gustavo@gmail.com</a>&gt;</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&#39;t control when your GC will run, if you declare this objects into loop and don&#39;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&#39;t forward this objects created inside consumer loop, this objects will be automatic�eligible�for GC but GC don&#39;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>On Tue, Feb 2, 2010 at 3:48 AM, Seema Biradar <span dir="ltr">&lt;<a href="mailto:seemasbiradar@gmail.com" target="_blank">seemasbiradar@gmail.com</a>&gt;</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>
<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>
</div></div></blockquote></div><br></div>