When deploying integration artifacts in different environments, it is necessary to change the synapse parameters used in the artifacts according to the environment. For example, the 'endpoint URL' may be different in each environment. Without this feature, you need to create and maintain separate artifacts for each environment. This feature allows you to deploy the same integration solution to multiple environments (DEV, PROD, etc.) and then inject separate parameter values to the different environments.
There are two ways to dynamically inject parameters to your integration solutions: Using environment variables, or a configuration file.
Tip |
---|
This feature is particularly useful for container deployments, where we need to dynamically inject the parameter values to the container. |
There are two ways to dynamically inject parameters to your integration solutions:See the topics given below.
Table of Contents |
---|
Injecting parameters as environment variables
If you want to inject parameter values as environment variables, follow the steps given belowyou need to apply the following.
Configuring the synapse artifacts
...
Code Block |
---|
<?xml version="1.0" encoding="UTF-8"?> <endpoint xmlns="http://ws.apache.org/ns/synapse" name="StockQuoteEndPoint"> <address uri="$SYSTEM:stockQuoteEP"/> </endpoint> |
...
Export environment variable
In a VM deployment, you can export the variables as shown below. Here VAR is the url you need to have set as environment property.
...
Injecting parameters using a configuration file
...
If you want to inject parameter values using a configuration file, you need to apply the following configurations:
Configuring the synapse artifacts
...
Setting up the configuration file
...
You can use a configuration file to load the parameter values for each environment. By default, the ESB profile is shipped with the file.properties file (stored in the <EI_HOME>/conf directory), which you can use to store the parameter values that should be injected to your synapse configuration. The parameter values should be specified as a key-value pair as shown below.
Code Block |
---|
stockQuoteEP=http://localhost:9000/services/SimpleStockQuoteService |
Injecting parameter values
...
Alternatively, you can use a custom file stored in a file system instead of the default file.properties
file. For example, a file named dev.properties can be used to inject parameter values to the development environment and a file named prod.properties can be used to inject parameter values to the production environment.
It is possible to use a file in an NFS mount as the file path and it is useful for container deployment. We can use the environment specific configuration from the file in NFS mount and inject the parameter values to the docker container.
Updating the system property
In the the product startup scripts (integrator.sh
and integrator.bat
file), which are available in the <EI_HOME>/bin directory, a system variable is defined as follows and the value is set to default
.
...
Code Block |
---|
-Dproperties.file.path=default |
...
When the above value set to default, the system reads the parameters from the file.properties file that is available in the <EI_HOME>/conf
directory.
...
Code Block |
---|
-Dproperties.file.path=default |
If you are using a custom configuration file, instead of the file.properties file, you
...
need to configure the particular file path in the integrator.sh or integrator.bat file as shown below.
Localtabgroup | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Supported parameters
Endpoint parameters
Configure the Endpoint parameters in your synapse configuration as shown below.Listed below are the synapse artifact parameters to which you can dynamically inject values. Note that there are two ways to inject parameters as discussed above.
Endpoint parameters
Endpoint Type | Parameters |
---|---|
Address Endpoint | uri |
HTTP Endpoint | uri |
Loadbalance Endpoint | hostname and port |
RecipientList Endpoint | hostname and port |
Template Endpoint | uri |
WSDL Endpoint | wsdlURI |
...
Inbound Endpoint parameters
See the list of properties that The parameters used by the following inbound endpoints can be defined as environment variables:.
- HTTP Inbound Protocol
- HTTPS Inbound Protocol
- HL7 Inbound Protocol
- CXF WS-RM Inbound Protocol
- JMS Inbound Protocol
- RabbitMQ Inbound Protocol
...
Proxy service parameters
The pinned servers parameter as well as all the service-level transport parameters:
...
Message Store parameters
Message Store Type | Parameters |
---|---|
JMS Message Store |
|
WSO2 MB Message Store | |
RabbitMQ Message Store |
|
JDBC Message Store |
|
Resequence Message Store |