On 11/29/2012 01:47 AM, Adam Zedan wrote:
I am trying to understand batch fetching with the following practical
example.Currently My Qpid Broker has 70 items in it. I am trying to
implement batch fetching however I am not having any success. Here is what
I am doing in C# receiver.
Receiver rx = session.CreateReceiver("QueueA");
rx.Capacity = 20000 ;
while (rx.Fetch(ref message_n, timeout_n))
{
uint val = rx.Available; //Value is 69. So does this mean
only 1 item was fetched ?
//Some code to process the message
session.Acknowledge();
}
As it can be seen that only one item was fetched reducing the content from
70 to 69 in the broker. I thought with batch fetching you could retrieve
all the 70 items at one time since my count is set to 20000. Am i missing
something here ?
The fetch call returns at most one message. The way prefetch works is by
allowing the broker to send messages to the client that the client
library will hold in anticipation of further fetch calls.
In your case, if available is reporting 70 messages, then the next 70
calls to fetch are just returning messages from a local, client side
buffer. There is no round trip involved. (Of course were there any more
messages on the broker those could be sent at any time providing the
client had capacity).
In other words the prefetch is not so much a batch interface as a way to
prevent having to do a network round-trip per fetch.
Any suggestions would help. Also how do I acknowledge
batch messages.
Just call its less frequently then every message. The acknowledge call
without parameters will acknowledge all previously fetched messages.
I want to reduce network load by making minimum trip to the
broker that is why I am trying to use batch fetching (prefetch)
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@qpid.apache.org
For additional commands, e-mail: users-h...@qpid.apache.org