On 2/6/07, GaryG <[EMAIL PROTECTED]> wrote:
I started playing around with Message Groups and have a bunch of new questions: 1. If I'm understanding this correctly, Message Groups are tying groupIDs to a specific consumer of the Queue. However, this mapping is private to the broker. So, the problem I'm seeing is that if I run 2 brokers, and my URL is something like this: url = "failover:(tcp://localhost:61616,tcp://localhost:62616) Then I send a bunch of messages that are targeted for msgGroupId=1 or 2 or 3, and I have 3 consumers running. Ideally what should happen is that each consumer should get an equal share of messages. And indeed I see this behavior with only 1 broker. But with 2 brokers, I don't see this happen, only 1 consumer gets all the messages. Am I missing something?? I have persistence turned off in this case. Does this mean that MessageGroups only work when there's only one broker, and don't work in Master-Slave broker configuration??
They work with a single broker or with Master-Slave. But they don't work with networks of brokers.
2. Similar example to the above, but only 1 broker, 3 consumers. I start the message sender, and start seeing the messages spread out across the consumers. Then I kill one of the consumers. One of the 2 remaining consumers picks up the slack. All is good. Now I turn the killed consumer back on, and herein lays the problem. I never see this consumer get any messages. I've tried the suggested method of closing the message group with this code: System.out.println("closing messageGroupId="+msgGroupId); Message message = session.createTextMessage("reset"); message.setStringProperty("JMSXGroupID", msgGroupId); message.setIntProperty("JMSXGroupSeq", 0); producer.send(message); But even after I do this, the 3rd consumer never gets any messages, they continue going to one of the other guys. So the question is...if one of the consumers dies, and then comes back (common scenario), how do I get the broker to forward messages to him once again??
We don't automatically rebalance things after failures; we're currently hoping that there is a sufficient number of message groups around that things balance fine. (Though closing the message group should work - its just not defined which consumer will get the next message group - so if you keep trying to close them, you should eventually see things settle down). One work around is to just force each consumer to restart periodically to help re-balance things (or close the message groups as you figured out) -- James ------- http://radio.weblogs.com/0112098/