hi all
I have the following lines of code , in c#, to send and receive messages
from java broker
The other side is Java client, and there is no problem in request, response
When I use jconsole to monitor qpid, the heap size is increasing and does
not fall
So eventually Qpid Broker will become OutOfMemory
jconsole shows that all the temporarily queues created are removed probably
I wish to ask if these c# codes is the correct way to close a session or not
{
string g = Guid.NewGuid().ToString();
IClientSession s = client.CreateSession(10);
s.QueueDeclare(g, Option.AUTO_DELETE);
s.ExchangeBind(g, ReplyDestination, g, null);
s.ExecutionSync();
s.MessageSubscribe(g);
AsyncRespListener a = new AsyncRespListener();
a.session = s;
s.AttachMessageListener(a, g);
UTF8Encoding enc = new UTF8Encoding();
Message m = new Message();
m.AppendData(....something....);
m.MessageProperties.SetCorrelationId(enc.GetBytes(g));
ReplyTo r = new ReplyTo("", "nothing");
m.MessageProperties.SetReplyTo(r);
client.CreateSession(1000).MessageTransfer("serverchannel",
"generalservice", m);
lock (a.alock)
Monitor.Wait(a.alock, 5000);
s.QueueDelete(g);
return a.result;
}
and listener class
class AsyncRespListener : IMessageListener
{
public IClientSession session { get; set; }
public object alock = new object();
public string result;
private RangeSet rs = new RangeSet();
public void MessageTransfer(IMessage m)
{
BinaryReader reader = new BinaryReader(m.Body, Encoding.UTF8);
byte[] body = new byte[m.Body.Length - m.Body.Position];
reader.Read(body, 0, body.Length);
UTF8Encoding enc = new UTF8Encoding();
result = enc.GetString(body);
rs.Add(m.Id);
session.MessageAccept(rs);
lock (alock)
Monitor.Pulse(alock);
}
}
Regards,
Stephen
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:users-subscr...@qpid.apache.org