[jboss-jira] [JBoss JIRA] (JGRP-1540) TP: simplified message bundler

Bela Ban (JIRA) jira-events at lists.jboss.org
Fri Nov 23 03:52:21 EST 2012


     [ https://issues.jboss.org/browse/JGRP-1540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

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


More information about the jboss-jira mailing list