Debugging a Flow Service that Performs an Asynchronous Request/Reply with Universal Messaging
Debugging a flow service that performs an asynchronous request/reply where Universal Messaging is the messaging provider has some unique considerations due to the nature of debugging in Designer and the request/reply channel that the publishing service uses to retrieve an asynchronous reply.
When debugging a flow service using the debug tools in
Designer,
Designer considers every
Run,
Step Into, and
Step Over action to be a new service execution. When running a service in debug mode, the service execution ends when
Designer encounters a breakpoint or the flow terminates. For a step command such as
Step Intoand
Step Over, the service execution starts and end with each step command.
The
Universal Messaging connection alias used for an asynchronous request/reply must have the
Enable Request/Reply Channel and Listener option selected. When the
Universal Messaging connection alias starts,
Integration Server creates a request/reply channel for this
Universal Messaging connection alias if one does not yet exist.
Integration Server also starts a listener on
Integration Server that subscribes to the alias-specific request/reply channel.
In combination, the above behaviors result in the following limitations when debugging a flow service that performs an asynchronous request/reply:
The step commands cannot be used to step through the flow service. Because
Designer considers every
Step Into or
Step Over action to be a new service execution, the request/reply channel created by stepping into or over the
pub.publish:publishAndWait or
pub.publish:deliverAndWait publishing service is also removed as part of the step command. Consequently, there is no channel from which the
pub.publish:waitForReply service can retrieve a reply document.
When using breakpoints, insert the breakpoint at or before the service that initiates the request and/or after the service that retrieves the request. That is, insert the breakpoint at or before the invocation of
pub.publish:publishAndWait or
pub.publish:deliverAndWait and/or after the invocation of
pub.publish:waitForReply. Do not set a breakpoint on a step that occurs after the initiating the request but before retrieving the reply.
Designer considers every Run command to be a new service execution. The request/reply channel created by the publishing service is removed when Designer encounters the breakpoint. Setting a breakpoint after the publish but before retrieving the reply results in the removal of the request reply/channel which means that there is no channel from which the pub.publish:waitForReply service can retrieve a reply document.