|
RSS Feed - WebSphere MQ Support
|
RSS Feed - Message Broker Support
|
 |
|
Queue depth. |
« View previous topic :: View next topic » |
Author |
Message
|
Reeti |
Posted: Wed Oct 16, 2002 1:05 am Post subject: Queue depth. |
|
|
Apprentice
Joined: 11 Jul 2002 Posts: 40
|
Hi:
How to trap queue depth full event? Is there any way of triggering an event whenever queue depth is reached.
Regards
Reeti |
|
Back to top |
|
 |
mgrabinski |
Posted: Wed Oct 16, 2002 1:33 am Post subject: |
|
|
Master
Joined: 16 Oct 2001 Posts: 246 Location: Katowice, Poland
|
The queue full event mesasge goes to SYSTEM.ADMIN.PERFM.EVENT queue. You set triggering on this queue (but it would require an application that handles it).
There are plenty of ISV's tools that monitor event queues (I've seen only Candle Commmand Center but I'm sure that BMC or Primeur have also such tools) _________________ Marcin Grabinski <>< |
|
Back to top |
|
 |
Reeti |
Posted: Wed Oct 16, 2002 1:39 am Post subject: |
|
|
Apprentice
Joined: 11 Jul 2002 Posts: 40
|
Hi:
Thanks for the reply.
I'm aware of the SYSTEM.ADMIN.PERFM.EVENT queue, but is there any wayout which gives me an instant notification of the queue depth full event. Suppose, while I'm trying to put any message in a queue and the queue is full, then how do I notify my application program that the queue is full, without being accessing the system event queues.
Regards
Reeti |
|
Back to top |
|
 |
vmcgloin |
Posted: Wed Oct 16, 2002 2:29 am Post subject: |
|
|
Knight
Joined: 04 Apr 2002 Posts: 560 Location: Scotland
|
Your application should get a return code MQRC_Q_FULL (2053) when the MQPUT fails.
Hope that helps,
Vicky |
|
Back to top |
|
 |
Reeti |
Posted: Wed Oct 16, 2002 3:36 am Post subject: |
|
|
Apprentice
Joined: 11 Jul 2002 Posts: 40
|
Hi:
Can I send the message to the Dead Letter queue if the message fails to get delivered in the queue because of the queue depth full event? I'm trying the same but it's neither going to the dead letter queue nor can I trace the message.
Pls. help.
Regards
Reeti |
|
Back to top |
|
 |
mgrabinski |
Posted: Wed Oct 16, 2002 5:29 am Post subject: |
|
|
Master
Joined: 16 Oct 2001 Posts: 246 Location: Katowice, Poland
|
No and yes
When your app puts a message to a full queue, you will get a return code. You can then choose what to do with your message - try later, discard or put to another queue (this may be the DLQ, but remember to provide the MQDLH header).
On the other hand, if successfuly put a message to a queue, and the message goes to another queue (that always happens when communicating with other queue manager) which happens to be full, the message will go to the DLQ automaticaly.
HTH _________________ Marcin Grabinski <>< |
|
Back to top |
|
 |
bduncan |
Posted: Wed Oct 16, 2002 3:19 pm Post subject: |
|
|
Padawan
Joined: 11 Apr 2001 Posts: 1554 Location: Silicon Valley
|
Yes, it's important to realize the difference. In the situation where you are putting to a local queue which is full, your put command will fail. But if you are putting a message to a remote queue definition which points to a queue somewhere else, because of the asynchronous nature of MQSeries, you MQPUT will succeed. Then, your local queue manager will attempt to route the message to the destination queue based on the properties of the remote queue definition. At this point, the local queue manager doesn't know the destination queue is full. So the message flows over the channel, and the destination queue manager sees that the queue this message is destined for is full. Since the message isn't currently in ANY queue, the queue manager needs to do something with it, so in this case, it automatically puts it on the dead letter queue. BTW, if the dead letter queue on the remote queue manager fills up as well, then the remote queue manager stops the channel, in which case, now the message start to pile up on the local queue manager's transmission queue. If that fills up, then your MQPUTs will fail  _________________ Brandon Duncan
IBM Certified MQSeries Specialist
MQSeries.net forum moderator |
|
Back to top |
|
 |
billybong |
Posted: Thu Oct 06, 2005 4:26 am Post subject: |
|
|
 Disciple
Joined: 22 Jul 2005 Posts: 150 Location: Stockholm, Sweden
|
bduncan wrote: |
Yes, it's important to realize the difference. In the situation where you are putting to a local queue which is full, your put command will fail. But if you are putting a message to a remote queue definition which points to a queue somewhere else, because of the asynchronous nature of MQSeries, you MQPUT will succeed. Then, your local queue manager will attempt to route the message to the destination queue based on the properties of the remote queue definition. At this point, the local queue manager doesn't know the destination queue is full. So the message flows over the channel, and the destination queue manager sees that the queue this message is destined for is full. Since the message isn't currently in ANY queue, the queue manager needs to do something with it, so in this case, it automatically puts it on the dead letter queue. BTW, if the dead letter queue on the remote queue manager fills up as well, then the remote queue manager stops the channel, in which case, now the message start to pile up on the local queue manager's transmission queue. If that fills up, then your MQPUTs will fail  |
That must have been one of the best explanations I've seen yet. Seriously. |
|
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
|
|
|
|