Hi,
The more I run Java test code which is simply declare/delete queue and
check the queue existence by queuequery(please see below), the more
C++ broker memory size increase(NEVER decrease).
Every times, the test code is successful.
Here is run summary(the test code run 10 times.).
| broker memory size
Run # | (MB)
----------|------------------------------
initial | 3
#1 | 23
#2 | 42
#3 | 50
#4 | 52
#5 | 65
#6 | 64
#7 | 72
#8 | 77
#9 | 81
#10 | 88
My question is,
Although the queue had been deleted, why broker memory didn't decrease?
Is broker memory leak?
Or Is there mistake about how to use Java client API?
Regards,
Yuta
Details:
qpid 0.6
C++ Broker(windows, x64)(downloaded from
http://www.riverace.com/qpid/downloads.htm)
Java client
OS:Win XP x64 SP2
CPU:Core2 Duo E6750
Mem:8GB
JRE:Sun1.6.0_12(x64)
--------------------------test code start----------------------------------
import static org.testng.Assert.*;
import java.util.UUID;
import org.apache.qpid.transport.Connection;
import org.apache.qpid.transport.Future;
import org.apache.qpid.transport.Option;
import org.apache.qpid.transport.QueueQueryResult;
import org.apache.qpid.transport.Session;
import org.testng.annotations.Test;
public class QPIDSpecTest
{
private final String HOST_NAME = "localhost";
private final int PORT_NO = 5672;
private final String VIRTUAL_HOST = "test";
private final String USER_NAME = "qpid";
private final String PASSWORD = "qpid";
@Test
public void testDeclareQueue()
{
Connection connection = new Connection();
connection.connect(HOST_NAME, PORT_NO, VIRTUAL_HOST,
USER_NAME, PASSWORD);
Session session = connection.createSession();
final int REPEAT_NUM = 10000;
for(int i = 0; i < REPEAT_NUM; i++)
{
UUID uuid = UUID.randomUUID();
String name = uuid.toString();
session.queueDeclare(name, null, null, Option.EXCLUSIVE,
Option.AUTO_DELETE);
session.sync();
Future<QueueQueryResult> resultFuture = session.queueQuery(name);
QueueQueryResult result = resultFuture.get();
assertTrue(result.hasQueue());
session.queueDelete(name);
session.sync();
Future<QueueQueryResult> resultAfterFuture =
session.queueQuery(name);
QueueQueryResult resultAfter = resultAfterFuture.get();
assertFalse(resultAfter.hasQueue());
}
session.close();
connection.close();
}
}
--------------------------test code end----------------------------------
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:[email protected]