Microgateway 10.5 | webMethods Microgateway Help | Policies | Routing | Content-based Routing
 
Content-based Routing
If you have a native API that is hosted at two or more endpoints, you can use the Content-based routing protocol to route specific types of messages to specific endpoints. You can route messages to different endpoints based on specific values that appear in the request message. You might use this capability, for example, to determine which operation the consuming application has requested, and route requests for complex operations to an endpoint on a fast machine. For example, if your entry protocol is HTTP or HTTPS, you can select the Content-based routing. The requests are routed according to the content-based routing rules you create. You may specify how to authenticate requests.
The table lists the properties that are supported for this policy in Microgateway:
Parameter
Description
Default Route To: Specifies the URLs of two or more native services in a pool to which the requests are routed.
Endpoint URI
Specifies the URI of the native API endpoint to route the request to in case all routing rules evaluate to False. Service registries that have been added to the Microgateway instance are also included in the list.
Note:
Only simple aliases, endpoint aliases, and service registry aliases are supported in Microgateway.
If you choose a service registry, Microgateway sends a request to the service registry to discover the IP address and port at which the native service is running. Microgateway replaces the service registry alias in the Endpoint URI with the IP address and port returned by the service registry.
For example, if your service is hosted at the URL: http://host:port/abc/, you need to configure the Endpoint URI as: http://${ServiceRegistryName}/abc/.
HTTP Method
Specifies the available routing methods: GET, POST, PUT, DELETE, and CUSTOM (default).
When CUSTOM is selected, the HTTP method in the incoming request is sent to the native service. When other methods are selected, the selected method is used in the request sent to the native service.
Note:
Software AG recommends to use Request Transformation > Method Transformation to achieve this as other transformations can also be done under the same policy.
HTTP Connection Timeout (seconds)
Specifies the time interval (in seconds) after which a connection attempt times out.
The precedence of the Connection Timeout configuration is as follows:
1. If you specify a value for the Connection timeout field in routing endpoint alias, then the Connection timeout value specified in the Endpoint alias section takes precedence over the timeout values defined at the API level and the global level.
2. If you specify a value 0 for the Connection timeout field in routing endpoint alias, then Microgateway uses the value specified in the Connection timeout field in the routing protocol processing step of an API. The Read Timeout value specified at an API level takes precedence over the global configuration.
3. If you specify a value 0 or do not specify a value for the Connection timeout field in the routing protocol processing step at the API level or specify a value 0 at an alias level, then Microgateway uses the value specified in this pg.endpoint.connectionTimeout property.
4. If you do not specify any value for pg.endpoint.connectionTimeout, then Microgateway uses the default value of 30 seconds.
Read Timeout (seconds)
Specifies the time interval (in seconds) after which a socket read attempt times out.
The precedence of the Read Timeout configuration is as follows:
1. If you specify a value for the Read timeout field in routing endpoint alias, then the Read timeout value specified in the Endpoint alias section takes precedence over the timeout values defined at the API level and the global level.
2. If you specify a value 0 for the Read timeout field in routing endpoint alias, then Microgateway uses the value specified in the Read Timeout field in the routing protocol processing step of an API. The Read Timeout value specified at an API level takes precedence over the global configuration.
3. If you specify a value 0 or do not specify a value for the Read timeout field in the routing protocol processing step at the API level or specify a value 0 at an alias level, then Microgateway uses the value specified in this pg.endpoint.readTimeout property.
4. If you do not specify any value for pg.endpoint.readTimeout, then Microgateway uses the default value of 30 seconds.
SSL Configuration. Specifies values to enable SSL client authentication that Microgateway uses to authenticate incoming requests for the native API.
Keystore Alias
Specifies the keystore alias that is present in the system-settings.yml. This value (along with the value of Client Certificate Alias) is used for performing SSL client authentication.
Key Alias
Specifies the alias for the private key, which must be stored in the keystore specified by the keystore alias.
Service Registry Configuration
Service Discovery Endpoint Parameter
Values required for constructing the discovery service URI.
*Parameter. An alias that you have included in the discovery service URI while adding the service registry to Microgateway.
*Value. A value for the path parameter. The alias specified in Path Parameter is substituted with this value when invoking the discovery service.
For example: if the service registry configuration of the service registry that you have selected in Endpoint URI has Service discovery path set to /catalog/service/{serviceName} (and the {serviceName} alias is intended for passing the service name), you must provide {serviceName} as Parameter and the name of the service as Value.
Rule: Defines the routing decisions based on one of the following routing options.
Payload Identifier
Specifies using the payload identifier to identify the client, extract the custom authentication credentials supplied in the request represented using the payload identifier, and verify the client's identity.
The Payload identifier includes the following information.
*Expression type. Specifies the type of expression, which is used for identification. You can have one the following expression type:
*XPath. Provide the following information:
*Payload Expression. Specifies the payload expression that the specified XPath expression type in the request has to be converted to. For example: /name/id
*Namespace Prefix. The namespace prefix of the payload expression to be validated.
*Namespace URI. The namespace URI of the payload expression to be validated.
*JSONPath. Provide the Payload Expression that specifies the payload expression that the specified JSONPath expression type in the request has to be converted to. For example: $.name.id
*Text. Provide the Payload Expression that specifies the payload expression that the specified Text expression type in the request has to be converted to. For example: any valid regular expression.
You can have multiple payload identifiers as required.
Note:
Only one payload identifier of each type is allowed. For example, you can have a maximum of three payload identifiers, each being of a different type.
Route To. Specifies the Endpoint URI of native APIs in a pool to which the requests are routed.
Endpoint URI
Specifies the URI of the native API endpoint to route the request to. You can use service registries in a similar manner as described in the main Endpoint URI above.
HTTP Method
Specifies the available routing methods: GET, POST, PUT, DELETE, and CUSTOM (default).
When CUSTOM is selected, the HTTP method in the incoming request is sent to the native service. When other methods are selected, the selected method is used in the request sent to the native service.
HTTP Connection Timeout (seconds)
Specifies the time interval (in seconds) after which a connection attempt times out.
The precedence of the Connection Timeout configuration is as follows:
1. If you specify a value for the Connection timeout field in routing endpoint alias, then the Connection timeout value specified in the Endpoint alias section takes precedence over the timeout values defined at the API level and the global level.
2. If you specify a value 0 for the Connection timeout field in routing endpoint alias, then Microgateway uses the value specified in the Connection timeout field in the routing protocol processing step of an API. The Read Timeout value specified at an API level takes precedence over the global configuration.
3. If you specify a value 0 or do not specify a value for the Connection timeout field in the routing protocol processing step at the API level or specify a value 0 at an alias level, then Microgateway uses the value specified in this pg.endpoint.connectionTimeout property.
4. If you do not specify any value for pg.endpoint.connectionTimeout, then Microgateway uses the default value of 30 seconds.
Read Timeout (seconds)
Specifies the time interval (in seconds) after which a socket read attempt times out.
The precedence of the Read Timeout configuration is as follows:
1. If you specify a value for the Read timeout field in routing endpoint alias, then the Read timeout value specified in the Endpoint alias section takes precedence over the timeout values defined at the API level and the global level.
2. If you specify a value 0 for the Read timeout field in routing endpoint alias, then Microgateway uses the value specified in the Read Timeout field in the routing protocol processing step of an API. The Read Timeout value specified at an API level takes precedence over the global configuration.
3. If you specify a value 0 or do not specify a value for the Read timeout field in the routing protocol processing step at the API level or specify a value 0 at an alias level, then Microgateway uses the value specified in this pg.endpoint.readTimeout property.
4. If you do not specify any value for pg.endpoint.readTimeout, then Microgateway uses the default value of 30 seconds.
SSL Configuration
Specifies values to enable SSL client authentication that Microgateway uses to authenticate incoming requests for the native API.
Provide the following information:
*Keystore Alias. Specifies the keystore alias that is present in the system-settings.yml. This value (along with the value of Client Certificate Alias) is used for performing SSL client authentication.
*Key Alias. Specifies the alias for the private key, which must be stored in the keystore specified by the keystore alias.
Service Registry Configuration
Service Discovery Endpoint Parameter
Values required for constructing the discovery service URI.
*Parameter. An alias that you have included in the discovery service URI while adding the service registry to Microgateway.
*Value. A value for the path parameter. The alias specified in Path Parameter is substituted with this value when invoking the discovery service.
For example: if the service registry configuration of the service registry that you have selected in Endpoint URI has Service discovery path set to /catalog/service/{serviceName} (and the {serviceName} alias is intended for passing the service name), you must provide {serviceName} as Parameter and the name of the service as Value.