]
Bela Ban commented on JGRP-1540:
--------------------------------
This could enable us to use message bundling for *all* messsages, even those tagged with
OOB and possibly even DONT_BUNDLE msgs. Since a message marked as DONT_BUNDLE never has to
wait for the max bundling timeout to kick in, but instead only for a batch to fill up
(should be quick unless the batch size is big !) or no messages remaining in the queue,
even sync RPCs might be fast. Need to bench this... e.g. how quickly do 60K fill up when a
batch of 1K messages is sent (a few microsecs?)
TP: simplified message bundler
------------------------------
Key: JGRP-1540
URL:
https://issues.jboss.org/browse/JGRP-1540
Project: JGroups
Issue Type: Enhancement
Reporter: Bela Ban
Assignee: Bela Ban
Fix For: 3.3
Instead of maintaining a hashmap (like for the current bundlers), a simple blocking
bounded queue of messages would be used. Whenever we've reached M bytes or N
milliseconds have elapsed, a consumer thread processes the queue in the following manner:
* First set the queue to a new queue (volatile assignment), reuse a number of queues
* Iterate through all messages in the current queue, for each message:
** If the destination is the same as the current destination, write the message to the
stream for the current destination
** Else set the current destination to msg.getDest() and create an output stream
(similar to writing a message list)
*** Stream the current message to the output stream
*** If there was a previous destination, close the associated output stream and send
the message list
Example:
* We have messages with the following destinations: A, null, null, B, B, null, A, null,
null, null
* First we send a message list consisting of 1 message to A
* Next we send a message list consisting of 2 messages to the cluster (dest==null)
* Then we send a batch of 2 messages to B, 1 to the cluster, 1 to A and 3 to the cluster
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: