|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Any Limits on Clients |
« View previous topic :: View next topic » |
Author |
Message
|
klamerus |
Posted: Sat Feb 26, 2005 5:16 pm Post subject: Any Limits on Clients |
|
|
 Disciple
Joined: 05 Jul 2004 Posts: 199 Location: Detroit, MI
|
We have an application where we have programs pulling messages off queues and performing work based on those messages.
We have just uplifted our servers to some faster boxes (these are all Windows), and we have plenty of capacity now to run several of these programs against a single queue (hence getting work done faster).
Is there any limits to how many programs we can have doing an MQGet against a single queue and how exactly would it work so far as which gets the message? For instance, if we create 4 of these programs and point them all to the same queue, one will certainly issue it's Get command first, second, third and fourth. When messages start coming in, will the one waiting first, get the first message, and then if another comes in (while the first is working) will the second get it, and so on? |
|
Back to top |
|
 |
zpat |
Posted: Sat Feb 26, 2005 11:23 pm Post subject: |
|
|
 Jedi Council
Joined: 19 May 2001 Posts: 5866 Location: UK
|
They will in effect self-load balance by pulling messages until they are busy processing them. The gets will be met in the order received by the queue manager I believe, but it doesn't really matter. |
|
Back to top |
|
 |
klamerus |
Posted: Sun Feb 27, 2005 10:11 am Post subject: No deadlock? |
|
|
 Disciple
Joined: 05 Jul 2004 Posts: 199 Location: Detroit, MI
|
There's no way that requests coming in will get stuck in a deadlock or contention situation is there? |
|
Back to top |
|
 |
PeterPotkay |
Posted: Tue Mar 01, 2005 4:45 pm Post subject: |
|
|
 Poobah
Joined: 15 May 2001 Posts: 7722
|
Quote: |
There's no way that requests coming in will get stuck in a deadlock or contention situation is there?
|
No.
And the client threads that get the messages will not be exactly load balanced. If each thread takes 1 second to process a message, and the messages arrive once every 10 seconds, it is possible that at the end of the day, Thread 1 did 100%, or 0%, or any % in between, of the processing. You shouldn't care though. Just now that if Thread X is pworking on Message#1, and Message#2 arrives, 1 of the 3 remaining threads will instantly get it. As long as their are availabe threads with outstanding GET With Waits, your messages will get processed instantly, but it is "undocumented" as to whatthe distribution will be. _________________ Peter Potkay
Keep Calm and MQ On |
|
Back to top |
|
 |
klamerus |
Posted: Tue Mar 01, 2005 5:02 pm Post subject: Puzzled |
|
|
 Disciple
Joined: 05 Jul 2004 Posts: 199 Location: Detroit, MI
|
Well, now I'm puzzled. If three different executables all do a GET - after which they'll each individually be waiting (presumably in some sort of order) for messages, I can't see how one program would get all the requests. Even if the first one only took 1 second, the other two would already be waiting on the queue. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Mar 01, 2005 5:06 pm Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Peter's case depends on messages arriving slower than it takes to process the message. In that case, every time a message shows up, all thread processes will be waiting.
So every thread process has the same chance of getting each message - assuming that the undocumented methods don't have an undocumented priority scheme in place. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
klamerus |
Posted: Tue Mar 01, 2005 5:11 pm Post subject: Ahhh |
|
|
 Disciple
Joined: 05 Jul 2004 Posts: 199 Location: Detroit, MI
|
I see.
Well, that's not really a problem then though. If the messages are arriving slower than the processing, having more processing power won't make any difference anyway. I'm not trying to artificially create load-balancing across these programs doing the work. I just want to use up excess capacity I have (vs. being single-threaded and slower).
So, if the same process does all the processing (because it finishes before the next message arrives) I wouldn't care less. |
|
Back to top |
|
 |
|
|
 |
|
Page 1 of 1 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
|