IBM Integration Bus, Version 9.0.0.8 Operating Systems: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

See information about the latest product version

Configuring message flows to process timeouts

Connect the HTTP Timeout terminal of the HTTPInput or SOAPInput nodes to further nodes to process timeouts.

Before you start:

You can configure message flows that start with an HTTPInput or SOAPInput node by connecting the HTTP Timeout terminal to further nodes for processing timeouts:

If these conditions are not met when you deploy the BAR file for the message flow that includes one of these nodes, a warning is generated, and the path of the message flow that you have connected to the HTTP Timeout terminal is ignored. No further warnings are generated until the next restart.

To set a static timeout value in an input node:

  1. Create a message flow, or open an existing flow.
  2. In the Message Flow editor, select the input node for this message flow. The node properties are displayed in the Properties view (below the editor pane).
  3. Set an appropriate time for the timeout interval in the property Maximum client wait time. The default interval is 180 seconds.

    If this time expires, and you have not connected one or more nodes to the HTTP Timeout terminal, the listener that received the client request message responds with a SOAP Fault message indicating that a timeout has occurred.

  4. If you want to provide customized timeout processing, connect one or more nodes to the HTTP Timeout terminal. You must include in this sequence the reply node that matches the input node. Therefore, if your message flow starts with an HTTPInput node, you must include an HTTPReply; if your message flow starts with a SOAPInput node, you must include a SOAPReply node.

To set a dynamic timeout value in an input node:

You can derive the value that you use to replace the existing value by several means; for example:
  • Create a configurable service of type UserDefined to define a timeout value, and retrieve the appropriate property.
  • Read a record from a database.
  • Use a value from a field within the message body.

By propagating from the HTTP Timeout terminal you can then change the contents of the responses that your message flow sends to the client. The processing on the sequence of nodes that you connect to the HTTP Timeout terminal is also subject to a further timeout, so that the client always gets a response within a known timeout interval.

When a message is propagated from the HTTP Timeout terminal the message tree contains the input headers of the original input message and a message body that is the fault timeout message. The original message body along with other information relating to the timeout can be accessed in the LocalEnvironment message tree. For example, the following record can be found in the LocalEnvironment:
  (0x01000000:Name):HTTP = (
    (0x01000000:Name):Input = (
      (0x01000000:Name):Timeout = (
        (0x03000000:NameValue):OriginalClientLastWaitTime = 10 (INTEGER)
        (0x03000000:NameValue):OriginalClientWaitTime     = 15 (INTEGER)
        (0x03000000:NameValue):OriginalMessageMadeTheFlow = TRUE (BOOLEAN)
        (0x03000000:NameValue):OriginalRequestIdentifier  = 
           X'48545450000000000000000000000000c00c000000000000' (BLOB)
        (0x03000000:NameValue):OriginalInboundMessage     = X'3c3e' (BLOB)
      )
    )
  )

For SOAPInput nodes the SOAPReply node connected on the HTTP Timeout terminal path must send a SOAP fault response message and the reply status code of 500 cannot be altered. For HTTPInput nodes any response message can be sent from the HTTP Timeout terminal and the reply status code can be changed by updating the LocalEnvironment.Destination.HTTP.ReplyStatusCode message tree field.


bc43720_.htm | Last updated Friday, 21 July 2017