ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » General IBM MQ Support » why they say MQ does not lose messages ?

Post new topic  Reply to topic
 why they say MQ does not lose messages ? « View previous topic :: View next topic » 
Author Message
serpota
PostPosted: Sat May 24, 2008 3:11 am    Post subject: why they say MQ does not lose messages ? Reply with quote

Voyager

Joined: 26 May 2006
Posts: 85

Dear coleagues !

If I setup the following scenario
and put 5 messages into QR1,
then the last one (and following )
*** is LOST by MQ ***
without a trace, except event log at QM2.

And it is not suposed to, isn't it ?

Here is what I am reading : MQ v 6.0 Clustering, page 8 -

If a message arrives at a queue manager but there is no queue there to receive it, the message is put on the dead-letter queue as usual. (If there is no dead-letter queue, the channel fails and retries, as described in the WebSphere MQ Intercommunication book.)

What is the reason - now the message disapears ?

Yes, I know I did "restrict" mq environment,
but
??? what if a customer does not MONITOR dead letter queue,
or it is not defined (more usual that I suspected)
or any other similar situation (PUT disabled by someone)
??????????????????????

Thanks for you support.

=====================================

Scenario : 2 queue managers

QM1 is "sending" side, QM2 is "receiving" side.

QM1 has QR1, remote queue pointing to QL1 at QM2,
transmission queue QX1 at QM1.

QX1 is associated to channel QM1.TO.QM2

QM2 has QL2, local queue, with MaxDepth set to 2.
QM2 has DLQ2, local dead letter queue, with Max depth set to 2.

=====================================
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Sat May 24, 2008 8:02 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

scenario 1
Your messages may not be persistent and as such MQ is authorized to "loose" them in case there is a problem with the channel. Read the manuals...

scenario 2 Do not mess with the DLQ default depth. It will only bring you grief. You need to get a monitoring product that will page you in case a msg stays on the DLQ for more than a few mins (to allow msgs to expire)...

Enjoy
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
serpota
PostPosted: Sun May 25, 2008 6:26 am    Post subject: Reply with quote

Voyager

Joined: 26 May 2006
Posts: 85

mr fjb_saper :
(1) there are no 2 scenarios.
Only one scenario, with 2 queue managers ...

(2) I said nothing about persistency.
Of course messages ARE persistent, and still they are lost.

(3) I did set max_depth to 2 just to test what happened.
If MaxDepth is 50.000, and NO MONITORING tool is installed,
the situation I describe still can happen.

Do you mean "MQ DOES LOSE MESSAGES" ?

( if few circunstances are met, as no DLQ monitor installed )
Back to top
View user's profile Send private message
fjb_saper
PostPosted: Sun May 25, 2008 7:27 am    Post subject: Reply with quote

Grand High Poobah

Joined: 18 Nov 2003
Posts: 20756
Location: LI,NY

NO if your messages are persistent (and this is a message attribute not a queue attribute). Queues can only set message attributes when posted with persistence as QDEF. Once the persistency is set on a message it no longer gets changed. Application setting overrides anything else...

So again MQ does not loose messages.
However they can hide in numerous places:
  1. most common is on the xmitq of a retrying channel...
  2. channel buffer of a retrying channel.
    Stop the channel first then check its xmitq.
  3. channel buffer of an indoubt channel. Resolve the indoubt channel as described in the intercommunications manual...
  4. DLQ -- note that this means the DLQ of the sender / receiver and the DLQ of any qmgr in between.
  5. Lastly they (messages) may never have been written. Your apps should always check the return code and reason code after an MQPUT.
  6. Finally check that your messages have no expiry set. MQ will expire and remove your messages in that case ==> working as designed


Again, MQ works as designed and does not loose persistent messages...
If you have proof of the contrary open a PMR with IBM immediately.

Enjoy
_________________
MQ & Broker admin
Back to top
View user's profile Send private message Send e-mail
bruce2359
PostPosted: Sun May 25, 2008 8:55 am    Post subject: Reply with quote

Poobah

Joined: 05 Jan 2008
Posts: 9472
Location: US: west coast, almost. Otherwise, enroute.

To make this explanation simpler (or not)...

(This assumes that your application has successfully MQPUT a message into a queue.)

A message can be:
in a real local queue; or
in a local transmission queue waiting to be sent down a channel; or
in a remote queue manager's transmission queue waiting to be sent down a channel (multi-hopping); or
in a dead-letter queue in a remote queue manager

MQ wants to successfully deliver all of your messages - persistent and on-persistent.

If messages are persistent, they are logged, so that they will be recovered (if necessary) following qmgr restart.

If your messages have expiry set, they will expire and be purged from the queue. This is not 'lost.' You have directed the queue manager to expire the messages.

If your messages are non-persistent, by default they will not survive queue manager restart. This is documentd as a normal behavior of MQ. If your messages are non-persistent, AND if you have NPMCLASS(HIGH) for a local queue, then the qmgr will attempt to treat non-persistent messages like they were persistent at qmgr restart, and recover them.

If your messages are non-persistent, AND your channel definition specifies NPMSPEED(FAST), AND the message cannot be delivered to the queue on the remote queue manager, AND cannot be delivered to the remote queue manager's dead-letter-queue; then the remote queue manager will purge the message. This is not 'lost.' In this scenario, you have directed the remote queue manager discard the messages.

You will need to understand how your application creates messages (sets the persistence and expiry MQMD fields) discussed here, how MQ logging works, how your channels are defined, and so on.

WMQ does not lose messages; but you can create an environment where they will be discarded when the above conditions are met.
_________________
I like deadlines. I like to wave as they pass by.
ב''ה
Lex Orandi, Lex Credendi, Lex Vivendi. As we Worship, So we Believe, So we Live.
Back to top
View user's profile Send private message
serpota
PostPosted: Sun May 25, 2008 9:44 am    Post subject: Reply with quote

Voyager

Joined: 26 May 2006
Posts: 85

mr Bruce : you are absolutely right - I did create an environment where messages were purged.

mr Saper : you are absolutely right - once I did set "Persistency" in the messages (using RFHUTIL instead of AMQSPUT), the channel went down after the DLQ reached its MaxDepth.

I like MQ not losing messages !
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » why they say MQ does not lose messages ?
Jump to:  



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
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.