[jboss-dev-forums] [Design of Messaging on JBoss (Messaging/JBoss)] - Re: Grouping of messages with JMSXGroupId(JBMESSAGING-375)
timfox
do-not-reply at jboss.com
Thu May 24 14:32:06 EDT 2007
"hegsti" wrote : Hi, I'm trying to do my first contribution to JBoss Messaging so be nice :)
| I worked on a project last year where message groups (messages with the same group id always go to the same consumer on a queue).
| would have been really useful. I just finished a working proof of concept, which I hope to complete with help and feedback.
|
Great. Message groups are a nice feature that have been on our road map for some time. http://jira.jboss.com/jira/browse/JBMESSAGING-375
anonymous wrote :
| To continue to support the default round robin routing when JMSXGroupID is not supplied, I modified the existing RoundRobinPointToPointRouter to route based on given JMSXGroupID when supplied.
|
I agree it should be based on the RoundRobinRouter, but I would prefer to see it implemented in its own class e.g. GroupingRoundRobinPointToPointRouter. Maybe you can extend RoundRobinPointToPointRouter?
anonymous wrote :
| The Delivery handle(...) now behaves like this:
| ..
| ..
| get the reciver by round robin. if a groupId is given, try to see if a receiver is already assigned to handle this group.
| If it is, use this to deliver.
| Else bind the receiver given by round robin to the groupId in the message.
| deliver using this receiver.
|
| If the receiver is broken, remove the binding between the current receiver and the groupId.
|
| Where does the message go, if the receiver is broken?
| ...
| ...
|
| This approach will ensure that round robin works as before, and that each consumer will have an equal chance to be bound to spesific groups. If a receiver is broken, the mapping will be removed and a new receiver will be selected to handle the group.
|
|
Ok, makes sense.
anonymous wrote :
| To support a large number of groups in an efficient way, I decided not to use some kind of map which grows for each new group that needs a mapping to a receiver.
|
Personally I would just use a HashMap. HashMaps work on pretty much the same principle as you are suggesting anyway: I.e. they maintain an array and use the hashCode to detemine the lookup in the array - also they manage their own resizing so you don't have to worry about it.
I would be surprised if a HashMap was much slower than what you are suggesting.
I would be careful of doing premature optimisations.
Thanks Stian
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4048447#4048447
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4048447
More information about the jboss-dev-forums
mailing list