Configure Message Streaming Assertion

The Configure Message Streaming assertion allows large message requests to stream without being read and buffered by the Gateway. This assertion can reduce the latency of requests passing through the Gateway, but note that this will limit the types of validation and processing the Gateway is able to perform on these requests. An example of such a limitation is illustrated by the following policy:
gateway90
The
Configure Message Streaming
assertion allows large message requests to stream without being read and buffered by the Gateway. This assertion can reduce the latency of requests passing through the Gateway, but note that this will limit the types of validation and processing the Gateway is able to perform on these requests. An example of such a limitation is illustrated by the following policy:
Request: Configure Message Streaming: buffer immediately Request: route to <URL of external validation or other service> Request: route to <URL of protected service>
If this policy is changed to "enable streaming (no buffering)", the request body is streamed by the first routing assertion and will not be available to the second routing assertion.
To learn about selecting the target message for this assertion, see Selecting a Target Message.
Using the Assertion
  1. Do one of the following:
    • To add the assertion to the Policy Development window, see Add an Assertion.
    • To change the configuration of an existing assertion, proceed to step 2 below.
  2. Right-click <
    target
    >: Configure Message Streaming in the policy window and select
    Configure Message Streaming
    or double-click the assertion in the policy window. The assertion properties are displayed.
  3. Configure the properties as follows:
    Setting
    Description
    Buffer immediately (no streaming)
    Select this option to have the entire message read immediately and saved to the Gateway's internal buffer. If the total size exceeds the value of the
    attachment.diskThreshold
    cluster property, it will be buffered to disk. The target message will be buffered by the Gateway and will be available for repeated inspection or modification by subsequent operations.
    The assertion will fail if the target message has not yet been initialized (${<
    message variable
    >
    .buffer.status
    } ="uninitialized"), or, if the target message has already been streamed without being buffered (${<
    message variable
    >
    .buffer.status
    } = "gone").
    For more information about the ${<
    target
    >.
    buffer.status
    } variable, see "Message Layer Variables" in Context Variables.
    Enable streaming (no buffering)
    Select this option to prevent this target message from being buffered by the Gateway.
    Routine use of this option is recommended only if it is necessary to stream large requests through the Gateway without buffering.
     
    1. The assertion will fail if the target message has not yet been initialized (${<
      message variable
      >
      .buffer.status
      } = "uninitialized"),or, if it has already been buffered  (${<
      message variable
      >
      .buffer.status
      } = "buffered").
      The next operation that accesses the body of the target message will consume it in streaming mode. Any further attempt to access the body of this message will result in an error because it has already been streamed away.
    2. When enabling streaming in a SOAP service, the following settings must be used in the Service Properties to ensure that streaming occurs correctly:
      • In the [
        General
        ] tab, clear the
        Perform WS-Security processing for this service
        check box.
      • In the [
        WSDL
        ] tab, select the
        Allow requests intended for operations not supported by the WSDL
        check box.
  4. Click [
    OK
    ] when done.