|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
What's wrong with sharing? |
« View previous topic :: View next topic » |
Author |
Message
|
royr |
Posted: Tue Aug 21, 2001 6:34 am Post subject: |
|
|
 Acolyte
Joined: 30 Jun 2001 Posts: 65 Location: Israel
|
Hi,
"Why shouldn't I share the same local queue between processes that have different functions?"
During the design stages of an MQ application, a stubborn customer came up with this question and is unwilling to let go. I need hard answers (preferably references to official IBM documents or quotes from IBM employees) for it.
By "different functions" I don't necessarily mean a mix of message types in the same queue, but different processes, each doing a different (but similar) kind of work.
For example: Suppose I define a queue that contains debit requests from both credit card companies and bank transfers. Two processes serve the queue, one handles credit card companies requests and the other handles bank transfers. Each process knows exactly which messages should it get (say by selecting from the queue by CorrelId).
What's wrong with this design? It's technically feasible, and IBM does not recommend against it in any of the documents I saw.
I came up with some answers myself, but none of the seem to kill the argument:
1. Selection by CorrelId is expected to cause performance degradation.
2. One process can overflow the queue (e.g., if its messages are accumulating faster then they're processed), disrupting the other process.
3. One process backouting can disrupt the other process BROWSE_UNDER_CURSOR requests (HOW? I got a strong feeling it can happen, but can't explain).
4. Debugging a single process is hell, since the queue is stuffed with irrelevant messages.
5. Because I said so.
One irrelevant answer is:
Multiple servers on the same queue cause performance degredation because of the sharing overhead. It's actually usually recommended to run several instances of the same process serving the same queue to improve performance.
Can you help guide this lost sheep to its herd? |
|
Back to top |
|
 |
kolban |
Posted: Tue Aug 21, 2001 7:25 am Post subject: |
|
|
 Grand Master
Joined: 22 May 2001 Posts: 1072 Location: Fort Worth, TX, USA
|
One other answer would be separation of function. If a single queue is being used for two purposes, having separate queues allows a higher degree of configurability and maintainability. A queue per function allows the queue to be named for that function.
The biggest grouch is the get by correlid. This will always be slower than get next message. Unless you are using MQ on z/OS, there is no indexing on MsgId or CorrelId and as such a linear scan of the queue to find a matching message (or not) is required. |
|
Back to top |
|
 |
Tibor |
Posted: Tue Aug 21, 2001 11:34 pm Post subject: |
|
|
 Grand Master
Joined: 20 May 2001 Posts: 1033 Location: Hungary
|
Unless you are using MQ on z/OS, there is no indexing on MsgId or CorrelId
... or Compaq NSK (formerly Tandem)
|
|
Back to top |
|
 |
finnr |
Posted: Mon Oct 29, 2001 12:53 am Post subject: |
|
|
Newbie
Joined: 28 Oct 2001 Posts: 1 Location: Russell Finn
|
>Unless you are using MQ on z/OS, there is no indexing on MsgId or CorrelId
The main distributed platforms (NT, AIX, HP, Sun etc) index all local queues by all relevant indices - CorrelId, MsgId, GroupId, MsgSeqNumber, Offset
Russell Finn
|
|
Back to top |
|
 |
bower5932 |
Posted: Mon Oct 29, 2001 2:42 pm Post subject: |
|
|
 Jedi Knight
Joined: 27 Aug 2001 Posts: 3023 Location: Dallas, TX, USA
|
Is the distributed indexing actually documented anywhere? |
|
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
|
|
|
|