Author |
Message
|
wraymore |
Posted: Thu Jul 05, 2007 1:53 pm Post subject: First use of MQGet - having issues |
|
|
Centurion
Joined: 16 Aug 2005 Posts: 114 Location: Burlington, NC USA
|
Broker is WMB v6.0.0.3 on AIX
Input is coming from Z/OS once daily batch process and data looks like (each line is separate message and grouping is turned on):
DATE2007-06-29 (Occurs once)
ACCTData String
SPECData String
TESTData String
RFLXData String
CPTSData String - end of group
etc
NACTCount of Accouts (nbr of groups sent; occurs once and is end of final group)
Business Rule in Message Flow is to each group of messages as a single message in XML format (xmlns).
Message Flow consists of these nodes:
MQInput
Transaction mode: Yes
Order Mode: By Queue Order
Catch Terminal wired for error handling
Out Terminal wired to
ResetContentDescriptor
MessageDomain: MRM (Reset Message Domain checked)
MessageSet: TRD_LCBSReflexMsgSet (GT0A8MS002001)
(Reset Message Set checked)
MessageType: TRDLCBSReflexData (Reset Message Type checked)
MessageFormatCWF1 (Reset Message Format checked)
Out Terminal Wired to
ComputeNode 1
Input data saved to local environment
Variables set to either 0 or 1 depending upon value of DataType (DATE, ACCT, NACT)
Variables set to either 0 or 1 depending upon MQMD.MsgFlags value
Compute Mode Properties set to ALL
Out Terminal wired to
Filter Node
If DataType IS NOT DATE Set RETURN to FALSE ELSE Set to TRUE
True Terminal wired to MQGet
False Terminal wired to Compute Node 2
MQGet Node
Basic Tab
Queue Name: TRD.IBD_LCBS_INT.QL
Advanced Tab
No changes to Default Settings
Out Terminal wired to
Compute Node 2
Based upon value of DataType (DATE, ACCT, etc)
output XML (XMLNS) message is created
Out Terminal wired to
Filter Node
If Local Environment Variable for write interim message = 1 Set Return to TRUE ELSE Set to FALSE
True Terminal wired to MQOutput Node
False Terminal wired to Filter Node
MQOutput Node for interim Message
Basic Tab
Queue Name: TRD.IBD_LCBS_INT.QL
Filter Node
If DataType is NACT (end of messages) Set to TRUE ELSE Set to FALSE
True Terminal wired to MQOutput Node
False Terminal wired to Flow Order Node
MQOutput Node for Completed Message
Basic Tab
Queue Name: TRD.IBD_RESULTS.QL
Flow Order Node
First wired to Compute Node 3
Second wired to MQOutput Node for Completed Message
Compute Node 3
Interim XML message built with only the DATE Element
Out Terminal wired to
MQOutput Node for interim Message
Basic Tab
Queue Name: TRD.IBD_LCBS_INT.QL
MQOutput Node for Completed Message
Basic Tab
Queue Name: TRD.IBD_RESULTS.QL
End of Message Flow
The issue I am encountering is that when I drop a collection of messages (whether one group or multiple groups) the message flow has to be stopped and started for the Input node to recognize that there is a new group of messages on the queue. The messages are then processed and the message(s) per account are constructed correctly.
In addition to the property settings on the MQInput Node listed above, I have tried all combinations of settings and when I have any of the others checked the messages will not process even without a message flow restart; like it does not recognize the grouping coming from the Z/OS System.
Any assistance will be appreciated.
I have read Bill Matthews response in item http://www.mqseries.net/phpBB2/viewtopic.php?t=37131&highlight=mqget
but since I am not doing any conversion with the MQGet am not sure that I need to incorporate any of that code.  |
|
Back to top |
|
 |
wbi_telecom |
Posted: Thu Jul 05, 2007 2:02 pm Post subject: |
|
|
 Disciple
Joined: 15 Feb 2006 Posts: 188 Location: Harrisburg, PA
|
Can you please tell me what exactly is the flow of events for which you have designed this message flow? As far as i can understand
1) You get a batch of n records from mainframe
2)You need to combine these and send it as XMLNS message?
if this is the case what exactly is the role played by MQGet node? How does the message coming from mainframe match with the message MQGet picking up from TRD.IBD_LCBS_INT.QL ?
Cheers, |
|
Back to top |
|
 |
wraymore |
Posted: Fri Jul 06, 2007 4:51 am Post subject: |
|
|
Centurion
Joined: 16 Aug 2005 Posts: 114 Location: Burlington, NC USA
|
Flow of events
Mainframe generates a file that a MQ utility program reads and generates a message for each record within the file. The messages are grouped by a unique identifier (1 to many groups). We have an existing service in WAS that stores report data by a unique identifier (ex. report as a BLOB with its identifying metadata).
Within the broker there are existing message flows that route data between systems based upon data within a MQRFH2 header (usr folder).
The message flow in question is utilized as an adapter between the mainframe generated messages and the routing message flows. Its objective is to combine the message data for each group and release the XML message to the router. The MQGet is the means for inputing the interim accumulation of the detail messages while processing a message group. |
|
Back to top |
|
 |
jefflowrey |
Posted: Fri Jul 06, 2007 4:55 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
It sounds like, maybe, the MQ utility program is sending messages in a logical group but not properly ending the logical group. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
wbi_telecom |
Posted: Fri Jul 06, 2007 7:16 am Post subject: |
|
|
 Disciple
Joined: 15 Feb 2006 Posts: 188 Location: Harrisburg, PA
|
Have you tried changing the setting of Transaction Mode in MQGet? May be the Unit of Work for a batch is not ending if you have unpicked messages in the interim queue so the second batch is not getting picked up unless you stop and start the flow (which ends the earlier unit of work)
Cheers, |
|
Back to top |
|
 |
wraymore |
Posted: Fri Jul 06, 2007 10:00 am Post subject: Resolved -- First use of MQGet - having issues |
|
|
Centurion
Joined: 16 Aug 2005 Posts: 114 Location: Burlington, NC USA
|
Jeff was right. When I went back and checked the groups coming from the mainframe the last group did not have the last in group flag set.
 |
|
Back to top |
|
 |
EddieA |
Posted: Mon Jul 09, 2007 1:30 pm Post subject: |
|
|
 Jedi
Joined: 28 Jun 2001 Posts: 2453 Location: Los Angeles
|
You don't actually mention, but just in case, you cannot use the MQGet node to read the same Queue as the MQInput node. Things will break.
Cheers, _________________ Eddie Atherton
IBM Certified Solution Developer - WebSphere Message Broker V6.1
IBM Certified Solution Developer - WebSphere Message Broker V7.0 |
|
Back to top |
|
 |
|