On 08/15/2012 10:14 PM, Nitin Shah wrote:
Hi,

I wanted to run this by the developers to understand why this happens.
We are running the release 0.16 C++ broker and have written some
applications to use the infrastructure. I have developed a simple
applications that sends messages to a receiving application on from the
amq.topic exchange using the auto created queues.  The connection is
setup to reconnect in the broker goes down by setting connection option
as reconnect:true.

I am using the receive loop for the messages s getNextReceiver calls. In
order for that to work the setCapacity for receivers is set at 10 for
that matter could be higher. The applications are linked with the
qpidclient library  -background info. The senderstarts up and sends 20
messages which the receiver receives. After that the sender does not
send any more messages. The test that I was trying was , what happens if
the broker is killed and then restarted. What I see if I do that is that
all the messages are resent by the broker to the receiving loop.

I haven’t done anything to the link options so they must be the default
ones. Each message received is acked with the session acknowledge calls,
so I assume the buffers must be released and the messages not kept in
the qpid subsystem. However that does not seem to be the case and each
time I restart the qpidd deaemon, the messages are resent to the
receiving app.  I have played around with setting capacity in the sender
and the receiver. If I set the capacity of the sender to 1 then only one
message is retransmitted when the broker comes up.  If I set the
capacity on the sender and the receiver to 100 i.e. higher than 20 then
all messages get resent on every restart of the broker.

It is in fact the sender that is resending the messages. The sender maintains a buffer of messages it has sent until the broker confirms them. On failover it will resend these 'in-doubt' messages. The capacity dictates the frequency at which the sender requests confirmation from the broker. You can also call Session::sync() on the senders session at any time to request the broker to indicate when it has received all the outstanding messages.


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to