Warning |
---|
WarningDo NOT use underscore character ("_") in JMS component and JMS connection names in JSON. |
The following is a common configuration format of components.json:
components.json
Code Block | ||
---|---|---|
|
{
"Components": [
//* ActiveMQ:
{
"componentName": "eagle-amq",
"componentClass": "org.apache.activemq.camel.component.ActiveMQComponent",
"connectionFactory": "#{wrapper:amqconnPool_native[amqConnFactory]}" //"#{cf:amqConnFactory}"
},
{
"componentName": "eagle-amq-tds",
"componentClass": "org.apache.activemq.camel.component.ActiveMQComponent",
"connectionFactory": "#{wrapper:single_amqconnPool_native[amqConnFactoryTds]}" //"#{cf:amqConnFactory}"
},
{
"componentName": "eagle-amq-no-pool",
"componentClass": "org.apache.activemq.camel.component.ActiveMQComponent",
"connectionFactory": "#{wrapper:single_amqconnPool_native[amqConnFactory]}"
},
//* IBM WebSphere MQ (IBM MQ):
{
"componentName": "wmq",
"componentClass": "org.apache.camel.component.jms.JmsComponent",
"connectionFactory": "#{wrapper:connPool[wmqConnFactory]}"//"#{cf:wmqConnFactory}"
},
{
"componentName": "wmq-tds",
"componentClass": "org.apache.camel.component.jms.JmsComponent",
"connectionFactory": "#{wrapper:single_connPool[wmqConnFactory]}"//"#{cf:wmqConnFactory}"
},
{
"componentName": "wmq-no-pool",
"componentClass": "org.apache.camel.component.jms.JmsComponent",
"connectionFactory": "#{cf:wmqConnFactory}"
}
//============================ Components with SSL ==================================
,
{
"componentName": "wmqssl",
"componentClass": "org.apache.camel.component.jms.JmsComponent",
"connectionFactory": "#{wrapper:connPool[wmqConnFactorySSL]}"
},
{
"componentName": "wmqssl-no-pool",
"componentClass": "org.apache.camel.component.jms.JmsComponent",
"connectionFactory": "#{cf:wmqConnFactorySSL}"
},
{
"componentName": "eagle-amqssl",
"componentClass": "org.apache.activemq.camel.component.ActiveMQComponent",
"connectionFactory": "#{wrapper:amqconnPool_native[amqConnFactorySSL]}"
},
{
"componentName": "eagle-amqssl-no-pool",
"componentClass": "org.apache.activemq.camel.component.ActiveMQComponent",
"connectionFactory": "#{cf:amqConnFactorySSL}"
}
]
,
"ConnectionFactories": { //*** reference: cf
"wmqConnFactory": { "class": "com.ibm.mq.jms.MQConnectionFactory" }
,
"amqConnFactory": { "class": "org.apache.activemq.ActiveMQConnectionFactory",
"parameters": { "UserName": "#{stream:USERID}",
"Password": "#{stream:USERPASSWORD}"}
}
,
"amqConnFactoryTds": { "class": "org.apache.activemq.ActiveMQConnectionFactory", //* AMQ connection factory for topic durable subscription
"parameters": { "UserName": "#{stream:USERID}",
"Password": "#{stream:USERPASSWORD}",
"ClientID": "#{stream:CLIENT_ID}" }
}
,
"wmqConnFactorySSL": { "class": "com.ibm.mq.jms.MQConnectionFactory",
"parameters": { "SSLFipsRequired" : false ,
"SSLSocketFactory": "#{instance:SSLSocketFactory}" ,
"SSLCipherSuite" : "TLS_RSA_WITH_AES_128_CBC_SHA256" }
}
,
"amqConnFactorySSL": { "class": "org.apache.activemq.ActiveMQSslConnectionFactory",
"parameters": { "KeyAndTrustManagers": "#{instance:KeyAndTrustManagers}",
"UserName": "#{stream:USERID}",
"Password": "#{stream:USERPASSWORD}" }
}
}
,
"Wrappers": {
"connPool<T>": { "class": "org.springframework.jms.connection.CachingConnectionFactory", // #{wrapper:connPool[wmqConnFactory]}
"parameters": { "setTargetConnectionFactory": "#{cf:<T>}",
"setSessionCacheSize": "100"
},
"init_method": "initConnection",
"destroy_method": "by default"
}
,
"single_connPool<T>": { "class": "org.springframework.jms.connection.SingleConnectionFactory", // #{wrapper:connPool[wmqConnFactory]}
"parameters": { "setTargetConnectionFactory": "#{cf:<T>}",
"ClientId": "#{stream:CLIENT_ID}"
},
"init_method": "initConnection",
"destroy_method": "destroy"
}
,
"amqconnPool": { "class": "org.springframework.jms.connection.CachingConnectionFactory",
"parameters": { "TargetConnectionFactory": "#{cf:amqConnFactory}",
"SessionCacheSize": "10"
},
"init_method": "initConnection",
"destroy_method": "by default"
}
,
"amqconnPool_native<T>": { "class": "org.apache.activemq.pool.PooledConnectionFactory",
"parameters": { "ConnectionFactory": "#{cf:<T>}"
},
"init_method": "start",
"destroy_method": "stop"
}
,
"single_amqconnPool_native<T>": { "class": "org.apache.activemq.pool.PooledConnectionFactory",
"parameters": { "ConnectionFactory": "#{cf:<T>}",
"MaxConnections": "1",
"MaximumActiveSessionPerConnection": "1"
},
"init_method": "start",
"destroy_method": "stop"
}
}
}
|
JMS Connection Configuration
The configuration files of JMS connections are stored by this path:
Info |
---|
Path to connectionsestar/tpe/dynamic/mc2/eaglejms/connections/*.json |
This is an example of the format of JMS configuration of connections:
connections.json
Code Block | ||
---|---|---|
|
{
"Region": "Specific Oracle SID of the region", /*Specific Oracle SID of region name to which this config belongs*/
"Connections": [
{
"ConnectionName": "mywmq.connection", /* do NOT use underscore character ("_") in name*/
"ComponentName": "wmq", /* reference to component name defined in components.json */
"Parameters": { // Some specific parameters
"port": 1415,
"ctransportType": 1 ,
"clientID": "client ID" /* sets Client ID */
},
/* JNDI has a higher priority: if not null then this object will be used as a JMS
connection factory */
//"JndiConnectionFactory": "my.jndi.connection.factory1"
}
]
}
|
Note |
---|
Future implementationJndiConnectionFactory - property is not supported yet. |
You may need to make a JMS Connection configuration for more than one JMS Component. For example, when you interact with more than one JMS broker. In this case, you would add one more section in connection.json config, as shown in the example below:
connections.json
Code Block | ||
---|---|---|
|
{
"Region": "Specific Oracle SID of the region", /*Specific Oracle SID of region name to which this config belongs*/
"Connections": [
{ // First connection
"ConnectionName": "my.FIRST.amq.connection", /* do NOT use underscore character ("_") in name*/
"ComponentName": "amq", /* reference to component name defined in components.json */
/* JNDI has a higher priority: if not null then this object will be used as a JMS connection factory */
//"JndiConnectionFactory": "my.jndi.connection.factory",
"Parameters": {
"brokerURL": "tcp://*****.eagleinvsys.com:61616" /* connection url (AMQ): Host name or IP + port */
}
},
{ // Second connection config
"ConnectionName": "my.jndi.wmq.connection", /* do NOT use underscore character ("_") in name*/
"ComponentName": "wmq", /* reference to component name defined in components.json */
"Parameters": { // Some specific parameters
"transportType": 1,
"port": 1414,
"channel": "",
"queueManager": "",
"HostName": ""
}
/* JNDI has a higher priority: if not null then this object will be used as a JMS connection factory */
//"JndiConnectionFactory": "my.jndi.connection.factory"
}
]
}
|
Info |
---|
Important Notes
|
Consider the following example of adding a User Name and Password, if you have to connect to JMS broker with your credentials:
connections.json
Code Block | ||
---|---|---|
|
{
"Region": "Specific Oracle SID of the region", /*Specific Oracle SID of region name to which this config belongs*/
"Connections": [
{
"ConnectionName": "myactivemq.connection",
"ComponentName": "eagle-amq",
"Parameters": {
"brokerURL": "tcp://xxxxxx.eagleinvsys.com:61616", /* connection url: Host name or IP + port */
"UserName": "#{stream:USERID}", /* just copy it as is - it will be JMS Connection User value from Stream parameters*/
"Password": "#{stream:USERPASSWORD}" /* just copy it as is - it will be JMS Connection Password value from Stream parameters*/
},
/* JNDI has a higher priority: if not null then this object will be used as a JMS connection factory */
//"JndiConnectionFactory": "my.jndi.connection.factory1"
}
]
}
|
External Vendor Libraries
In most cases, to enable JMS Messaging, you need to make all dependencies available to MC2.
All external dependencies must be stored ineagle/estar/tpe/dynamic/mc2/sharedlibs/.