Author |
Message
|
mainframeboy |
Posted: Mon Dec 06, 2010 6:01 am Post subject: TIMEOUT CONTROL NODE |
|
|
Newbie
Joined: 24 Oct 2009 Posts: 4
|
Environment
z/OS 1.12
MQ V7.0.1 LEVEL 005-001
WMB V7 FP1
TIMEOUT CONTROL NODE
I am in the process writing a common error flow with a TIMEOUT CONTROL NODE
This is most likely a user error but for the life of me I can't seem to get the TIMEPUT CONTROL NODE to delay the message by 60 seconds. I hope that this is not a stupid question, but I am stuck.
The flow is as follows
MQGET
|
TRACE
|
COMPUTE
|
TRACE
|
TIMEOUT CONTROL NODE
|
TRACE
The COMPUTE NODE contains the following:
CREATE COMPUTE MODULE JMSFlow_Compute
CREATE FUNCTION Main() RETURNS BOOLEAN
BEGIN
CALL CopyEntireMessage();
SET OutputRoot.XML.TimeoutRequest.Identifier = 'TIME1234';
SET OutputRoot.XML.TimeoutRequest.Action = 'SET';
SET OutputRoot.XML.TimeoutRequest.StartTime =
cast(CURRENT_TIMESTAMP + INTERVAL '60' second as char format 'HH:mm:ss');
RETURN TRUE;
END;
CREATE PROCEDURE CopyEntireMessage() BEGIN
SET OutputRoot = InputRoot;
END;
END MODULE;
The TIMEOUT CONTROL NODE contains the following attributes:
Unique Identifer: TIME1234
Request Location: InputRoot.XML.TimeoutRequest
Trace from MQGET
TIME 21:31:18.231770
(0x01000021:Name+):MRM = ( ['mrm' : 0x1ab26f08]
(0x0300000B:NameValue+):VERSION = 2 (INTEGER)
(0x01000013:Name+ ):CUSTOMER_NAME = (
(0x0300000B:NameValue+):N_FIRST = 'Ed' (CHARACTER)
(0x0300000B:NameValue+):N_LAST = 'Fletcher' (CHARACTER)
)
(0x01000013:Name+ ):CUSTOMER_ADDRESS = (
(0x0300000B:NameValue+):A_LINE = 'Mail Point 135' (CHARACTER)
(0x0300000B:NameValue+):A_LINE = 'Hursley Park' (CHARACTER)
(0x0300000B:NameValue+):TOWN = 'Winchester' (CHARACTER)
(0x0300000B:NameValue+):ZIP = 'SO21 2JN' (CHARACTER)
(0x0300000B:NameValue+):COUNTRY = 'UK' (CHARACTER)
)
(0x01000013:Name+ ):COMPLAINT = (
(0x0300000B:NameValue+):C_TYPE = 'Delivery' (CHARACTER)
(0x0300000B:NameValue+):C_REF = 'XYZ123ABC' (CHARACTER)
(0x0300000B:NameValue+):C_TEXT = 'I placed an order on 15-11-99, well in time for Christmas and I still have not had a delivery schedule sent to me. Please cancel the order and refund me NOW. X' (CHARACTER)
)
Trace from COMPUTE
TIME 21:31:18.235309
(0x01000021:Name+ ):MRM = ( ['mrm' : 0x19ba2620]
(0x0300000B:NameValue+):VERSION = 2 (INTEGER)
(0x01000013:Name+ ):CUSTOMER_NAME = (
(0x0300000B:NameValue+):N_FIRST = 'Ed' (CHARACTER)
(0x0300000B:NameValue+):N_LAST = 'Fletcher' (CHARACTER)
)
(0x01000013:Name+ ):CUSTOMER_ADDRESS = (
(0x0300000B:NameValue+):A_LINE = 'Mail Point 135' (CHARACTER)
(0x0300000B:NameValue+):A_LINE = 'Hursley Park' (CHARACTER)
(0x0300000B:NameValue+):TOWN = 'Winchester' (CHARACTER)
(0x0300000B:NameValue+):ZIP = 'SO21 2JN' (CHARACTER)
(0x0300000B:NameValue+):COUNTRY = 'UK' (CHARACTER)
)
(0x01000013:Name+ ):COMPLAINT = (
(0x0300000B:NameValue+):C_TYPE = 'Delivery' (CHARACTER)
(0x0300000B:NameValue+):C_REF = 'XYZ123ABC' (CHARACTER)
(0x0300000B:NameValue+):C_TEXT = 'I placed an order on 15-11-99, well in time for Christmas and I still have not had a delivery schedule sent to me. Please cancel the order and refund me NOW. X' (CHARACTER)
)
)
(0x01000010:ParserRoot):XML = ( ['xml' : 0x1ab374e8]
(0x01000000:Element):TimeoutRequest = (
(0x01000000:Element):Identifier = (
(0x02000000:pcdata): = 'TIME1234' (CHARACTER)
)
(0x01000000:Element):Action = (
(0x02000000:pcdata): = 'SET' (CHARACTER)
)
(0x01000000:Element):StartTime = (
(0x02000000:pcdata): = '21:32:18' (CHARACTER)
)
The StartTime is 60 seconds in advance
Trace TIMEOUT NODE
TIME 21:31:18.237666
(0x0100001B:Name+ ):MRM = ( ['mrm' : 0x19ba2620]
(0x0300000B:NameValue+):VERSION = 2 (INTEGER)
(0x01000013:Name+ ):CUSTOMER_NAME = (
(0x0300000B:NameValue+):N_FIRST = 'Ed' (CHARACTER)
(0x0300000B:NameValue+):N_LAST = 'Fletcher' (CHARACTER)
)
(0x01000013:Name+ ):CUSTOMER_ADDRESS = (
(0x0300000B:NameValue+):A_LINE = 'Mail Point 135' (CHARACTER)
(0x0300000B:NameValue+):A_LINE = 'Hursley Park' (CHARACTER)
(0x0300000B:NameValue+):TOWN = 'Winchester' (CHARACTER)
(0x0300000B:NameValue+):ZIP = 'SO21 2JN' (CHARACTER)
(0x0300000B:NameValue+):COUNTRY = 'UK' (CHARACTER)
)
(0x01000013:Name+ ):COMPLAINT = (
(0x0300000B:NameValue+):C_TYPE = 'Delivery' (CHARACTER)
(0x0300000B:NameValue+):C_REF = 'XYZ123ABC' (CHARACTER)
(0x0300000B:NameValue+):C_TEXT = 'I placed an order on 15-11-99, well in time for Christmas and I still have not had a delivery schedule sent to me. Please cancel the order and refund me NOW. X' (CHARACTER)
)
)
(0x01000010:ParserRoot):XML = ( ['xml' : 0x1ab374e8]
(0x01000000:Element):TimeoutRequest = (
(0x01000000:Element):Identifier = (
(0x02000000:pcdata): = 'TIME1234' (CHARACTER)
)
(0x01000000:Element):Action = (
(0x02000000:pcdata): = 'SET' (CHARACTER)
)
(0x01000000:Element):StartTime = (
(0x02000000:pcdata): = '21:32:18' (CHARACTER)
)
From Reading the documentation only Identifer and Action are required and I have left everything else as default.
Thanks
Ben |
|
Back to top |
|
 |
fatherjack |
Posted: Mon Dec 06, 2010 6:19 am Post subject: Re: TIMEOUT CONTROL NODE |
|
|
 Knight
Joined: 14 Apr 2010 Posts: 522 Location: Craggy Island
|
mainframeboy wrote: |
for the life of me I can't seem to get the TIMEPUT CONTROL NODE to delay the message by 60 seconds. |
Which message are you referring to here? _________________ Never let the facts get in the way of a good theory. |
|
Back to top |
|
 |
mqjeff |
Posted: Mon Dec 06, 2010 7:09 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
The message will be sent from a corresponding TimeoutNotification node, not to the out terminal of the TimeoutControl node.
Also, you will find that you do not get good performance if you try and delay a large number of messages, each one by 60 seconds, using Timeout nodes. |
|
Back to top |
|
 |
mainframeboy |
Posted: Mon Dec 06, 2010 4:08 pm Post subject: |
|
|
Newbie
Joined: 24 Oct 2009 Posts: 4
|
The input for the TIMEOUT CONTROL NODE:
XMLTimeoutRequest
TimeoutRequest field that in this test is separate to the main message, but is used by the TimeoutControl node to determine the requested timeout to be processed by the TimeoutNotification node. In this case, the starting date is not defined, they therefore take the default values of TODAY. The start time should be 60 seconds in the future as generated by the compute node.
This is not intended for high volume, rather only in error once every 3 months when a HTTP connection is down.
I am a little confused as the TimeoutCorntol Node is independent of the TimeoutNotification node |
|
Back to top |
|
 |
fatherjack |
Posted: Tue Dec 07, 2010 3:11 am Post subject: |
|
|
 Knight
Joined: 14 Apr 2010 Posts: 522 Location: Craggy Island
|
mainframeboy wrote: |
I am a little confused as the TimeoutCorntol Node is independent of the TimeoutNotification node |
No it's not. They are linked together by the "Unique Identifier". _________________ Never let the facts get in the way of a good theory. |
|
Back to top |
|
 |
mqjeff |
Posted: Tue Dec 07, 2010 3:20 am Post subject: |
|
|
Grand Master
Joined: 25 Jun 2008 Posts: 17447
|
Also note that TimeoutNotification is an *input* node, there's no way to connect it to the middle of a flow, and thus no way to "control" it based on the contents of a message. |
|
Back to top |
|
 |
|