MC2 JMS Configuration for RabbitMQ
Upload RabbitMQ JMS Client Libraries
To enable RabbitMQ connections the RabbitMQ JMS libraries have to be uploaded to estar/tpe/dynamic/mc2/sharedlibs
Only RabbitMQ JMS client libraries version 2.x are supported, 3.x is not supported.
The libraries can be downloaded from here:
https://repo1.maven.org/maven2/com/rabbitmq/jms/rabbitmq-jms/2.9.0/rabbitmq-jms-2.9.0.jar
https://repo1.maven.org/maven2/com/rabbitmq/amqp-client/5.19.0/amqp-client-5.19.0.jar
Create a JMS Connection Configuration File
Add a .json file to estar/tpe/dynamic/mc2/eaglejms/connections, for example connections-rabbitmq.json
This is an example of the file:
{
"Region": "DBName from cfg/db_connection.ini",
"Connections": [
{
"ConnectionName": "rabbitmq-myserver",
"ComponentName": "rabbitmqssl",
"SSLVersion": "TLSv1.2",
"Parameters": {
"virtualHost": "/",
"host": "rabbitmqhost",
"port": "5672"
}
}
]
}
The following parameters should be specified:
RegionName - the region on which MC2 is running. This should be retrieved from cfg/db_connection.ini DBName parameter in [primary] section.
ConnectionName - a unique connection name. The same connection name will be used in the Stream Configuration in Message Center Console.
ComponentName - should be rabbitmq if no SSL will be used or rabbitmqssl if SSL will be used
SSLVersion - set to TLSv1.2, or a value supported by SSLContext.getInstance in Java
Parameters - a list of parameters supported by RMQConnectionFactory
host - the host name on which RabbitMQ is running
port - the AMQP port (ssl or plain) RabbitMQ is running
virtualHost - the virtual host to use
Configure SSL Certificates
The keystore for RabbitMQ (JMS) should be created in estar/tpe/dynamic/mc2/private/eaglejms/eagle-keystore.jks
The trustore containing RabbitMQ certificates should be created in estar/tpe/dynamic/mc2/private/eaglejms/eagle-truststore.jks
Create the files/folders if not exist.
If the location has to be changed it can be done in the connections configuration file by adding an SSLTruststoreFile
and SSLKeystoreFile
parameters:
{
"Region": "DBName from cfg/db_connection.ini",
"Connections": [
{
"ConnectionName": "rabbitmq-myserver",
"ComponentName": "rabbitmqssl",
"SSLVersion": "TLSv1.2",
"SSLTruststoreFile": "full path to truststore.jks file",
"SSLKeystoreFile": "full path to keystore.jks file",
"Parameters": {
"virtualHost": "/",
"host": "rabbitmqhost",
"port": "5672"
}
}
]
}
The keystore and truststore should have the same password.
Create an MC2JMS stream
Use Message Center Console to create an MC2JMS stream. The stream should have:
Instance set to 10000
Delivery Method set to MC2JMS
Connection Name - the ConnectionName parameter from the JSON file, for example in the above it is rabbitmq-myserver
DestinationType - Queue or Topic
Destination Name - the name of the queue or topic
Sequential Reading - set to yes only if the processing sequence is important. In this case, the messages will be processed one by one.
JMS Connection User- the user id to use for connection
JMS Connection Password - the password to use for connection
Concurrent Consumers - number of concurrent consumers per MC2 worker. Setting to a higher value will increase the performance - more messages will be processed in parallel.
URI Parameters - this is an advanced parameter string. It is an URI string, the parameters are defined in Apache Camel JMS Component documentation: https://camel.apache.org/components/3.21.x/jms-component.html Do not add this parameter unless there is a real need for it.
SSL Keystore Password - this is the keystore and truststore password.
After the configuration files are changed and/or JMS Jar files are being dropped to sharedlibs folder MC2SERVICES (extractservice) must be restarted. There is no need to restart other MC2 services (kafka and redis).