The SOAPAsyncRequest node can use
HTTP or JMS transport. It is linked as a pair with a SOAPAsyncResponse node using
a unique identifier to correlate response messages with the original
request.
The SOAPAsyncRequest node sends
a Web service request, but the node does not wait for the associated
Web service response to be received. This asynchronous functionality
enables multiple outbound requests to be made almost in parallel because
the outbound request is not blocked waiting for the response. The
Web service response is received by the SOAPAsyncResponse node, which
can be in a separate message flow.
The
SOAPAsyncRequest node supports
two methods of asynchronous requests when using HTTP transport:
- Using WS-Addressing to direct the response to the paired SOAPAsyncResponse node. The SOAPAsyncRequest node waits
for the HTTP 202 acknowledgment before continuing with the message
flow, and the SOAPAsyncRequest node
blocks if the acknowledgment is not received. A new HTTP connection
is made by the backend server to reply to the SOAPAsyncResponse node. This
is the default behavior.
- Using HTTP asynchronous request-response. When the SOAPAsyncRequest property Use
HTTP asynchronous request-response is selected, the SOAPAsyncRequest node passes
the HTTP socket to the paired SOAPAsyncResponse node to allow
the backend server to reply using the same socket. When this option
is selected, WS-Addressing headers are sent, but are not required
to be understood by the backend server. The WS-Addressing headers
are not marked as mustUnderstand, and the replyTo header is set to
anonymous. The node therefore uses asynchronous HTTP socket handling
instead of WS-Addressing to make HTTP requests and receive an asynchronous
response.
Typically you should choose the HTTP asynchronous request-response
method to make asynchronous requests using the SOAPAsyncRequest node with
HTTP transport. To use this behavior, ensure that the SOAPAsyncRequest node property Use
HTTP asynchronous request-response is selected.
However,
you might want to use WS-Addressing instead to make asynchronous requests
using the
SOAPAsyncRequest node
in the following cases:
- If you want to use WS-Addressing to explicitly set the replyTo
header for the response message
- If the backend server has a high latency, you might want to use
WS-Addressing instead of HTTP asynchronous request-response so that
the HTTP socket is not left open for a long time.
To use WS-Addressing instead of HTTP asynchronous request-response
behavior when you are using HTTP transport, ensure that the
SOAPAsyncRequest node property
Use
HTTP asynchronous request-response is cleared. This is
the default behavior of the
SOAPAsyncRequest node.