[
https://issues.jboss.org/browse/JGRP-1540?page=com.atlassian.jira.plugin....
]
Bela Ban updated JGRP-1540:
---------------------------
Description:
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
was:
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
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:
http://www.atlassian.com/software/jira