[rabbitmq-discuss] Message Aggregating Queue

Tim Fox tim at rabbitmq.com
Tue May 3 12:11:13 BST 2011

On 28/04/11 13:54, Jason Zaugg wrote:
> The Last Value Caching Exchange seems to solve a slightly different
> problem (although one that we also have!). If I understand it, a queue
> attached to the LVC exchange would receive *every* newly delivered
> message, regardless of how fast it is able to process them.
Indeed. Maintaining the map at the queue level prevents the consumer 
getting overwhelmed with messages, which is kind of the point last-value 
in the first place. E.g. you may have a stock ticker app which only 
updates every second. It doesn't want to be flooded by millions of ticks 
it can't handle.

LVC exchange seems to be handling a somewhat different use-case 
sometimes known as "value + updates", where you're interested in syncing 
with some state machine (i.e. obtain current state), and also interested 
in getting all updates on that state from then on, so you can maintain a 
replica of that state machine. That's a common and valid use case, but 
not the same as the last-value queue case.

If you were so inclined, you could transform the "value+updates" case 
into the "last-value-queue" case by taking the  values+updates and 
maintaining a map yourself on the client-side to weed out "old" entries 
(as someone else mentioned), but this is a) extra work for you to do b) 
burns lots of bandwidth + cpu in sending unwanted messages to the 
client, and c) your client may still not be able to keep up with the 
firehose anyway.

More information about the rabbitmq-discuss mailing list