Integration Server 10.3 | Publish-Subscribe Developer’s Guide | Publishing Documents | Publishing a Document and Waiting for a Reply | Debugging a Flow Service that Performs an Asynchronous Request/Reply with Universal Messaging
 
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 thepub.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.