Author |
Message
|
bpsree |
Posted: Mon Dec 20, 2004 7:10 am Post subject: DLQ Messages Recovery |
|
|
Novice
Joined: 13 Sep 2004 Posts: 18
|
We have ICS running in production. We are doing data transformations through ICS from AS400 DB2 DB to SQL Server DB.
We have two input Q's and two AP Q's corresponding to two MQSeries connectors. I have given the Max. Q depth for the input Q's as 1000 as the ICS server is crashing quite often so that we will not be loosing any incoming messages from AS400 system.
Recently, I have defined a SYSTEM.DEAD.LETTER.QUEUE on the production ICS server. Now, when the input Q's are full, all the messages are being thrown into DLQ. Is there any way, for me to recover the messages from DLQ. I have increased the Max. Q Depth on the input Q's to be 5000, now. And I do not want to increase the Max. Q Depth more than the limit 5000 as we may loose the messages when the system crashes.
Anybody, please advise.
Thank you in advance! |
|
Back to top |
|
 |
vennela |
Posted: Mon Dec 20, 2004 7:18 am Post subject: |
|
|
 Jedi Knight
Joined: 11 Aug 2002 Posts: 4055 Location: Hyderabad, India
|
Quote: |
Is there any way, for me to recover the messages from DLQ. |
You have to write a dead letter handler to do that.
Quote: |
And I do not want to increase the Max. Q Depth more than the limit 5000 as we may loose the messages when the system crashes. |
If you use persistent messages, when the system crashes messages will not be lost. |
|
Back to top |
|
 |
bpsree |
Posted: Mon Dec 20, 2004 7:33 am Post subject: Dead Letter Handler |
|
|
Novice
Joined: 13 Sep 2004 Posts: 18
|
Thank you Grand Master,
I am newbie to MQSeries. Could you pl. let me know where do I find more about writing Dead Letter Handlers?
Also, I just checked the Q properties. It says Default persistence as "Persistent". Does that mean, the messages are persistent in this Q ?
Will they be saved in case of system crashes?
Also, there is one more question. I am planning to write a Java program to monitor the input Q's and AP Q's using Performance events. In case of Q depth is 1000 for ex:, then I have to send an email notification for the concerned person. After 15 min. again I have to send another notification and the third time too just in case, the person missed the notification. Is it possible to do this or is there any better approach.
Pl. let me know!
Thank you! |
|
Back to top |
|
 |
vennela |
Posted: Mon Dec 20, 2004 8:08 am Post subject: |
|
|
 Jedi Knight
Joined: 11 Aug 2002 Posts: 4055 Location: Hyderabad, India
|
Quote: |
Could you pl. let me know where do I find more about writing Dead Letter Handlers? |
I have never written one so I can't answer.
Quote: |
Also, I just checked the Q properties. It says Default persistence as "Persistent". Does that mean, the messages are persistent in this Q ? |
It depends. Some applications specifies to use the persistence as Q defined in which case the messages are persistent. If the queue is defined as persistent and if the application specifies the message as non-persistent, then the message will be non persistent.
What QUEUEs are you talking about? The connector's queues or the application queues. The queues that you give in the connector or URIs. So all you have to do is specify the PERSISTENT property.
Example:
queue://crossworlds.queue.manager/MQCONN.IN?persistence=2&priority=5
Quote: |
Is it possible to do this or is there any better approach. |
YES |
|
Back to top |
|
 |
bpsree |
Posted: Mon Dec 20, 2004 8:35 am Post subject: Thank you |
|
|
Novice
Joined: 13 Sep 2004 Posts: 18
|
Thank you GrandMaster,
Yes, I checked the persistency. The messages that are coming to input Q's(Application Q's) are persistent. Only thing that I am concerned while increasing the Q depth is when recovering ICS, it takes lot of time. I will look for Dead Letter Handler.
Thank you once again for your valuable comments! |
|
Back to top |
|
 |
JT |
Posted: Mon Dec 20, 2004 11:19 am Post subject: |
|
|
Padawan
Joined: 27 Mar 2003 Posts: 1564 Location: Hartford, CT.
|
Quote: |
In addition to the DLQ handler invoked using the runmqdlq command, WebSphere MQprovides the source of a sample DLQ handler, amqsdlq, whose function is similar to that provided by runmqdlq. You can customize amqsdlq to provide a DLQ handler that meets your requirements. For example, you might decide that you want a DLQ handler that can process messages without dead-letter headers. |
Check the \IBM\WebSphere MQ\Tools\c\Samples\ directory for a copy of amqsdlq. |
|
Back to top |
|
 |
csmith28 |
Posted: Mon Dec 20, 2004 11:24 am Post subject: |
|
|
 Grand Master
Joined: 15 Jul 2003 Posts: 1196 Location: Arizona
|
Not exactly sure how this works on the AS/400 but when I replay messages on the SDLQ on a UNIX OS I do the following:
Code: |
# echo "REASON(*) ACTION(RETRY) WAIT(NO)" > /tmp/retry.txt
# /usr/mqm/bin/runmqdlq < /tmp/retry.txt
|
This will cause the MQManager to re-attempt to deliver all the messages on your SYSTEM.DEAD.LETTER.QUEUE once. _________________ Yes, I am an agent of Satan but my duties are largely ceremonial.
Last edited by csmith28 on Mon Dec 20, 2004 11:54 am; edited 1 time in total |
|
Back to top |
|
 |
fjb_saper |
Posted: Mon Dec 20, 2004 11:42 am Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Depending on your platform there is a DLQ handler delivered by IBM.(runmqdlq)
Check out the admin manual. It tells you how to use it.
Enjoy  |
|
Back to top |
|
 |
|