Author |
Message
|
MikeClark |
Posted: Wed Feb 23, 2005 3:23 pm Post subject: "Not a valid trigger message" |
|
|
 Apprentice
Joined: 17 Feb 2004 Posts: 27 Location: Olympia, WA
|
I've been getting this message upon triggering, and there's not enough information I can find to determine what is actually going wrong.
The application to be run upon trigger occuring is never started. There are no Event messages being thrown. There is nothing relevant in AMQERROR1.log. Upon the message arriving, this message pops off, and the message gets thrown into the DLQ. That's all I'm seeing.
Anyone have an idea what might be going on? Or can point me to any other places to look for ideas?
Thanks!
Process and triggered queue definitions follow:
1 : DISPLAY PROCESS(OFM.TQM.AFRSEDIT.RESPONSE.PROCESS)
AMQ8407: Display Process details.
DESCR(Starts up the AFRSResponder)
APPLICID(c:\program files\afrsresponder\afrsresponder.exe)
USERDATA(Server1;platform_subseqation_dv;roninr;xyzabc)
ENVRDATA( )
PROCESS(OFM.TQM.AFRSEDIT.RESPONSE.PROCESS)
ALTDATE(2005-02-23) ALTTIME(13.51.46)
APPLTYPE(WINDOWSNT)
2 : DISPLAY QLOCAL(OFM.TQM.AFRSEDIT.REPLY.QL)
AMQ8409: Display Queue details.
DESCR(WebSphere MQ Default Local Queue)
PROCESS(OFM.TQM.AFRSEDIT.RESPONSE.PROCESS)
BOQNAME( )
INITQ(SYSTEM.DEFAULT.INITIATION.QUEUE)
TRIGDATA( ) CLUSTER( )
CLUSNL( ) QUEUE(OFM.TQM.AFRSEDIT.REPLY.QL)
CRDATE(2004-08-13) CRTIME(12.34.52)
ALTDATE(2005-02-23) ALTTIME(13.51.57)
GET(ENABLED) PUT(ENABLED)
DEFPRTY(0) DEFPSIST(YES)
MAXDEPTH(5000) MAXMSGL(64000000)
BOTHRESH(0) SHARE
DEFSOPT(SHARED) HARDENBO
MSGDLVSQ(PRIORITY) RETINTVL(999999999)
USAGE(NORMAL) TRIGGER
TRIGTYPE(FIRST) TRIGDPTH(1)
TRIGMPRI(0) QDEPTHHI(80)
QDEPTHLO(20) QDPMAXEV(ENABLED)
QDPHIEV(DISABLED) QDPLOEV(DISABLED)
QSVCINT(999999999) QSVCIEV(NONE)
DISTL(NO) DEFTYPE(PREDEFINED)
TYPE(QLOCAL) SCOPE(QMGR)
DEFBIND(OPEN) IPPROCS(1)
OPPROCS(0) CURDEPTH(0) _________________ "...a long habit of not thinking a thing wrong, gives it a superficial appearance of being right..." [Tom Paine] |
|
Back to top |
|
 |
EddieA |
Posted: Wed Feb 23, 2005 3:40 pm Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
Have you tried running the Trigger Monitor in a window, instead of the background. That way you might be able to see what is causing this.
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
MikeClark |
Posted: Wed Feb 23, 2005 3:42 pm Post subject: |
|
|
 Apprentice
Joined: 17 Feb 2004 Posts: 27 Location: Olympia, WA
|
Oh, yes. It is very uninformative. Just "Not a valid trigger message" and not one thing more. Maddening. _________________ "...a long habit of not thinking a thing wrong, gives it a superficial appearance of being right..." [Tom Paine] |
|
Back to top |
|
 |
JT |
Posted: Wed Feb 23, 2005 4:44 pm Post subject: |
|
|
Padawan
Joined: 27 Mar 2003 Posts: 1564 Location: Hartford, CT.
|
Mike,
What queue is monitored by the trigger monitor? Based on the IPPROCS value, it looks like it's your local triggered queue, OFM.TQM.AFRSEDIT.REPLY.QL, and not the SYSTEM.DEFAULT.INITIATION.QUEUE ? |
|
Back to top |
|
 |
MikeClark |
Posted: Wed Feb 23, 2005 5:00 pm Post subject: |
|
|
 Apprentice
Joined: 17 Feb 2004 Posts: 27 Location: Olympia, WA
|
Sorry, but you've lost me. IPPROCS is "1"... What does this have to do with the queue the trigger monitor is monitoring?
To repeat, the definition of the qlocal says the process and initq are:
PROCESS(OFM.TQM.AFRSEDIT.RESPONSE.PROCESS)
INITQ(SYSTEM.DEFAULT.INITIATION.QUEUE)
which appear to be correct... _________________ "...a long habit of not thinking a thing wrong, gives it a superficial appearance of being right..." [Tom Paine] |
|
Back to top |
|
 |
clindsey |
Posted: Wed Feb 23, 2005 5:43 pm Post subject: |
|
|
Knight
Joined: 12 Jul 2002 Posts: 586 Location: Dallas, Tx
|
If you are starting the trigger monitor from a command prompt, the -q parm should be SYSTEM.DEFAULT.INITIATION.QUEUE and not your local queue. If you defined the trigger monitor via MQ Services gui, put SYSTEM.DEFAULT.INITIATION.QUEUE in the queue name field, not your local queue. That is what JT was saying.
Charlie |
|
Back to top |
|
 |
kevinf2349 |
Posted: Wed Feb 23, 2005 7:08 pm Post subject: |
|
|
 Grand Master
Joined: 28 Feb 2003 Posts: 1311 Location: USA
|
Mike
Quote: |
Sorry, but you've lost me. IPPROCS is "1"... What does this have to do with the queue the trigger monitor is monitoring?
|
I believe that what he means is that because IPPROCS is 1 it would suggest that the queue is open for input by something...possibly the trigger monitor...this is incorrect...you monitor the initiation queue. In any case even if you are not monitoring the OFM.TQM.AFRSEDIT.REPLY.QL queue then as something has the queue open for input and no trigger message will be generated.
From the APG chapter 14
Quote: |
For triggering of type FIRST or DEPTH, no program has the application queue open for removing messages (that is, the OpenInputCount local queue attribute is zero). |
Hope this helps |
|
Back to top |
|
 |
JT |
Posted: Wed Feb 23, 2005 7:54 pm Post subject: |
|
|
Padawan
Joined: 27 Mar 2003 Posts: 1564 Location: Hartford, CT.
|
MikeClark wrote: |
Sorry, but you've lost me. IPPROCS is "1"... What does this have to do with the queue the trigger monitor is monitoring? |
As Kevin stated, something has your local queue open for input. If it's not the application, then it's probably the Trigger Monitor. Putting a message to a local queue while it's being examined by the Trigger Monitor will result in the 'Not a valid trigger message', as the message that was put to the local queue more than likely doesn't conform to the MQTM strcuture. |
|
Back to top |
|
 |
Nigelg |
Posted: Thu Feb 24, 2005 3:38 am Post subject: |
|
|
Grand Master
Joined: 02 Aug 2004 Posts: 1046
|
The error msg is produced because the msg the trigger monitor has read from the queue is not a trigger msg, for one of 3 reasons:
1. It is the wrong length
2. The eyecatcher, the first 4 bytes, is not "TM "
3. The version number, the next 4 bytes, is not 1
This would be the case if the trigger monitor was reading the local queue, not the initiation queue.
Is this the case? What init queue is the trigger monitor reading?
JT has asked this twice without a reply.
Do you have the browse output of the msg in the DLQ? |
|
Back to top |
|
 |
jefflowrey |
Posted: Thu Feb 24, 2005 6:44 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
Basically, every one else is asking if you actually understand triggering - because the error your getting only happens when someone doesn't understand triggering.
Here's the basics of triggering, in a nutshell. Triggering requires two queues, a trigger monitor, and a process definition to function. The first queue that is needed is the application queue - the queue to be processed by the application that is going to be triggered.
The second queue is the INITIATION queue. This is the queue that the Trigger Monitor processes. Applications do not write to or read from this queue.
When a message is placed on the Application queue (and certain conditions have been met), then the MQ system will write a message to the Initiation queue. That message will contain an MQTM structure, which includes all of the information from the Process Definition defined on the application queue, as well as the name of the application queue itself.
The trigger monitor reads this trigger message, and launches the process in the process definition. It also passes an MQTMC2 structure to the application on it's command line. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
MikeClark |
Posted: Thu Feb 24, 2005 9:52 am Post subject: |
|
|
 Apprentice
Joined: 17 Feb 2004 Posts: 27 Location: Olympia, WA
|
Quote: |
Basically, every one else is asking if you actually understand triggering - because the error your getting only happens when someone doesn't understand triggering. |
I freely admit I may not understand triggering. Your explanation clarifies a few points I was cloudy on, for which I thank you. However, and in answer to JT's question, I started the trigger monitor without specifying an initiation queue, thusly:
runmqtrm -m <qmgrname>
Although MQ does seem to support doing this, is it a mistake nevertheless?
In response to clindsey, who wrote:
Quote: |
If you defined the trigger monitor via MQ Services gui, put SYSTEM.DEFAULT.INITIATION.QUEUE in the queue name field, not your local queue. That is what JT was saying. |
As you can see from the definitions in the original posting that the INITQ is specified as the SYSTEM.DEFAULT.INITIATION.QUEUE.
In answer to Nigelg, who asked if I have the browse output of the message in the DLQ, the answer is Yes. Assuming that the tab "Dead-Letter Header" is of interest in this, it shows the Reason: "MQFB_TM_ERROR". I don't find this message in the Messages manual, nor any other in my possession, so I don't know its significance in context with the problem I'm having. _________________ "...a long habit of not thinking a thing wrong, gives it a superficial appearance of being right..." [Tom Paine] |
|
Back to top |
|
 |
JT |
Posted: Thu Feb 24, 2005 10:06 am Post subject: |
|
|
Padawan
Joined: 27 Mar 2003 Posts: 1564 Location: Hartford, CT.
|
What's the name of the 'Destination Queue' on the dead-letter header?
Are there any other trigger monitors running?
Also, post the message from the dead-letter queue.
Last edited by JT on Thu Feb 24, 2005 10:18 am; edited 2 times in total |
|
Back to top |
|
 |
EddieA |
Posted: Thu Feb 24, 2005 10:11 am Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
Quote: |
Although MQ does seem to support doing this, is it a mistake nevertheless? |
No. Without the -q, it will assume SYSTEM.DEFAULT.INITIATION.QUEUE is the Q it will monitor.
Quote: |
As you can see from the definitions in the original posting that the INITQ is specified as the SYSTEM.DEFAULT.INITIATION.QUEUE. |
Again, no. clindsey was taking about the TriggerMonitor in the Services GUI, where you can define a Trigger Monitor, not the Q where you specify which Q to write the TM to.
Quote: |
"MQFB_TM_ERROR". I don't find this message in the Messages manual |
It's in the Application Programming Reference:
Quote: |
MQFB_TM_ERROR
MQTM structure not valid or missing.
The Format field in MQMD specifies MQFMT_TRIGGER, but the message does not begin with a valid MQTM structure. For example, the StrucId mnemonic eye-catcher may not be valid, the Version may not be recognized, or the length of the trigger message may be insufficient to contain the MQTM structure.
On z/OS, the CKTI CICS transaction is an example of an application that processes trigger messages and can generate this feedback code. |
As to why you would get this if everything else is set up correctly certainly is strange. But, to rephase a question that was asked earlier. What program had the Q open when you did the DIS Q above, because IPPROCS is 1.
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
kevinf2349 |
Posted: Thu Feb 24, 2005 10:23 am Post subject: |
|
|
 Grand Master
Joined: 28 Feb 2003 Posts: 1311 Location: USA
|
Mike
I repeat
Quote: |
From the APG chapter 14
Quote:
For triggering of type FIRST or DEPTH, no program has the application queue open for removing messages (that is, the OpenInputCount local queue attribute is zero).
|
You will need to find out (as Eddie is suggesting) what has the queue open for input.
You can do this using MQExplore by highlighting the queue and then right clicking and selecting "ALL TASKS" and then "STATUS".
Hope this helps |
|
Back to top |
|
 |
EddieA |
Posted: Thu Feb 24, 2005 10:39 am Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
OK, how about this, to see EXACTLY what message is being written to the Q.
Don't start the Trigger Monitor. Instead use RFHUTIL (SupportPac IH03) and issue a READQ on SYSTEM.DEFAULT.INITIATION.QUEUE. This should come up with "No messages in queue". Do not exit RFHUTIL. At this point, it will keep the Q open, which satisfies one of pre-reqs for the Trigger Message to be written. Now put a message on the Triggered Q, which should cause a TM to be written. You should then be able to READ/BROWSE the message on the Initiation Q.
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
|