Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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.

...

JMS Components

MC2 provides an out-of-box configuration. All predefined components are stored in a single file. However, you can extend the number of JMS components by creation of new component-*.json file similar to the one described below.

The configuration files of JMS components (components.json) are stored

...

in this path: 

Info

...

titlePath to components

...

estar/tpe/dynamic/mc2/eaglejms/components/*.json

...

Note

Do NOT use underscore character ("_") in JMS component

...

and JMS connection names in JSON

...

.

On this page

Table of Contents

The following is a common configuration format of components.json:

components.json
Code Block
languagejs

...

 {
    "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
titleAdvanced

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 connections

estar/tpe/dynamic/mc2/eaglejms/connections/*.json

...

This is an example of the format of JMS configuration of connections

...

:

...

...

connections.json
Code Block

...

language

...

js
{ 
    "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
languagejs

...

{ 
    "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

...

  • ComponentName

...

  • Component names are defined in the components.json

...

  • configuration file.

...

  • All other parameters

...

  • must be specific for your purpose.

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
languagejs

...

...

{ 
    "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/.