This page contains a common JMS configuration.
JMS component configuration:
This article describes the JMS component configuration - it defines all JMS components which will be used in MC2.
...
...
...
title | Path to components |
---|
...
...
...
...
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" |
...
Note | ||
---|---|---|
| ||
MC2 provides out-of-box configuration – we will store all predefined components in a single file, but users are able to extend number of JMS components by creation of new component-*.json file similar one above. |
JMS connection configuration:
...
}
}
}
|
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"
}
]
}
|
...
JndiConnectionFactory - 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 |
---|
ConnectionName - all connection names must be unique |
...
|
...
|
...
|
...
|
...
|
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/.