Author |
Message
|
Thripura Sundari |
Posted: Tue Jul 19, 2005 10:28 am Post subject: Dynamically deciding Queue Names to put messages? |
|
|
Acolyte
Joined: 13 Jun 2005 Posts: 57 Location: Bangalore, India
|
Hi all,
I need to process some rules with the request message and do some sort of data transformation. The kind of data transformation that is required varies according to the rule.
So, if I have my compute node executing a set of rules, how do I decide on what kind of data transformation is required? it is fine if I can put the appropriate message format in a queue in I need to decide based on the rules.
I am not sure if this relates to dynamic queues. But here I would be dynamically deciding which queue to put the message in and not generating the queue dynamically.
I already have some message flows in which I have performed some simple data transformation. I would like to know how to specify which flow to invoke. (In other words, which queue to put the message in...)
The environment is WBIMB 5.0 with WMQ5.3. I donot have a rules formatter.
If some one could help, Thanks.
Regards,
Thripura Sundari. |
|
Back to top |
|
 |
jefflowrey |
Posted: Tue Jul 19, 2005 10:32 am Post subject: |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
You can use the RouteToLabel node to choose different execution paths through your flow, in order to different transformations to the input message. Your compute node can look at the incoming message, and the rules, and decide what label to set in the LocalEnvironment tree.
Likewise, you can configure the MQOutput node to use a DestinationList, and use a Compute node to create a single item DestinationList in the LocalEnvironment tree. Then the MQOutput node will write the message to that queue, determined dynamically by your code. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
chanduy9 |
Posted: Tue Jul 19, 2005 10:37 am Post subject: |
|
|
Disciple
Joined: 28 Nov 2001 Posts: 177 Location: USA
|
and dont forget to set the Compute Mode options as required in the Advance tab of the compute node.
Thanks,
Chandra. |
|
Back to top |
|
 |
Thripura Sundari |
Posted: Tue Jul 19, 2005 5:26 pm Post subject: |
|
|
Acolyte
Joined: 13 Jun 2005 Posts: 57 Location: Bangalore, India
|
Hi,
Thanks to both of you for the responses. I shall try them out and let you know. As I thought about it, I gpt one more question that I would like ask. Is it possible to use the combination of Aggregate nodes here along with Routeto Latel. I need to send multiple requests based on the rules and aggregate all the replies to the request and send one response.
Thanks.
Regards,
Thripura Sundari |
|
Back to top |
|
 |
malammik |
Posted: Tue Jul 19, 2005 6:18 pm Post subject: |
|
|
 Partisan
Joined: 27 Jan 2005 Posts: 397 Location: Philadelphia, PA
|
Here is how you do it. The mq output node can deliver the message to any queue that is the reply-to-q. You figure out where the message needs to go and set the reply-to-q to that queue. Make sure output node delivery mode is set to reply-to-q. _________________ Mikhail Malamud
http://www.netflexity.com
http://groups.google.com/group/qflex |
|
Back to top |
|
 |
Thripura Sundari |
Posted: Wed Jul 20, 2005 8:17 am Post subject: |
|
|
Acolyte
Joined: 13 Jun 2005 Posts: 57 Location: Bangalore, India
|
Hi,
Thank you very much. I worked out the RouteToLabel alone and that is wokring fine. I need to combine it with the Aggregate reply node which I have not yet completed. Once I complete that, I shall conbine both and let you know the results.
Thanks for your help.
Regards,
Thripura Sundari |
|
Back to top |
|
 |
JustFriend |
Posted: Sun Aug 14, 2005 10:04 pm Post subject: |
|
|
Novice
Joined: 30 May 2005 Posts: 22
|
Route to Queue:
I am presuming that your Input message is in XML format:
Code: |
The Flow:
MQInput >> Compute1 >> MQOutput |
Use the below ESQL in the Compute1 Node:
Code: |
CALL CopyMessageHeaders();
CALL CopyEntireMessage();
SET OutputLocalEnvironment = InputLocalEnvironment;
IF(InputRoot.XML.(XML.Element)*[1].XMLTag)) = ‘MyCondition’ THEN
SET OutputLocalEnvironment.Destination.MQ.DestinationData[1].queueName = ‘Q_NAME’;
ELSE
SET OutputLocalEnvironment.Destination.MQ.DestinationData[1].queueName = ‘ERROR_Q_NAME’;
END IF;
RETURN TRUE; |
Set the following properties in the MQOutput Node:
Basic:
Queue Manager Name : <blank>
Queue Name : <blank>
Advanced:
Destination Mode : Destination List
Transaction Mode : Automatic
Persistence Mode : Automatic
New Message ID : <unchecked>
New Correlation ID : <unchecked>
Segmentation Allowed : <unchecked>
Message Context : Pass All
Alternate User Authority : <unchecked>
Request:
Request : <unchecked>
Reply-to queue manager : <blank>
Reply-to queue : <blank>
The important settings in the above are:
1) OutputLocalEnvironment.Destination.MQ.DestinationData[1].queueName
2) Setting the “Destination Mode” as “Destination List” in the MQOutput Node
Hope this solves your problem. |
|
Back to top |
|
 |
|