Drawback Assertion
By default, the IBM Handle JMS setup creates a single JMS retailer file for all queues, which successfully locations all queues in a single repository. This method poses a danger: if one queue turns into corrupt and a message is affected, you would need to delete the shop file for all queues to resolve the problem.
How To Overcome the Drawback
We developed an answer to configure the MAS 8 software with a definite JMS retailer file for every queue.
Design and Resolution Implementation
On this instance, I will reveal the setup for 4 queues: cqin
, cgout
, sqin
, and sqout
. You may have extra queues if they’re enabled in your Maximo net.xml
configuration. I’ll modify the IBM configuration to point out the way to assign separate JMS retailer recordsdata for every queue, guaranteeing that an issue in a single queue doesn’t impression the others.
Make sure you create a Persistent Quantity Declare (PVC) to your JMS retailer recordsdata inside your MAS Core Suite software. In my case, the PVC is known as jmsstore
and is situated at /jmsstore
, with a storage dimension of 20GB for this demo. Nevertheless, you’ll be able to at all times allocate extra storage as wanted.
In case you have entry to OpenShift, navigate to your managed namespace and examine if pvc
has been created:
$oc challenge mas-masivt810x-manage
$oc get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
masivt810x-wkspivt810x-custom-logs Certain pvc-cba1d87d-ab9f-4213-96fa-f52a135b2863 20Gi RWX nfs-storage 18d
masivt810x-wkspivt810x-doclink Certain pvc-981fa13b-0be6-4b4c-b595-e587473109ae 10Gi RWX nfs-storage 18d
masivt810x-wkspivt810x-globaldir Certain pvc-b8c9ffd6-9c4c-403e-9706-d750c8fa4394 20Gi RWX nfs-storage 18d
masivt810x-wkspivt810x-jmsstore Certain pvc-c6a2bbdc-85dc-4e57-a2ac-4a284c1e1976 20Gi RWX nfs-storage 18d
masivt810x-wkspivt810x-migration Certain pvc-2e06b37b-b7ff-4914-b532-e482ea5bb233 10Gi RWX nfs-storage 18d
You may as well navigate to the maxinst
pod to examine if the /jmsstore listing was created.
$ oc exec -n mas-masivt810x-manage $(oc get -n mas-masivt810x-manage -l mas.ibm.com/appType=maxinstudb --no-headers=true pods -o identify | awk -F "https://dzone.com/" '{print $2}') -- ls -ltrh / |grep jms
drwxrwxrwx. 13 root 1000330000 0 Jul 3 11:32 jmsstore
After your MAS Core occasion reconciliation, you need to see the names of your PVCs, together with a brand new pvc
for the jmsstore
.
Within the Server bundles part, if the System managed checkbox is chosen, clear it. Click on Add bundle. We’re going to add 4 JMS server bundles:
- jmscqin
- jmscqout
- jmssqout
- jmssqin
Within the Sort column, choose standalonejms:
To configure the queues, full the next steps:
- Within the Further properties column to your JMS server bundle, click on View.
- Set a route subdomain that matches the identify of your bundles. We are going to use the pod’s service because the remoteServerAddress.
- Within the Further server config part, use XML to specify default and {custom} queues.
- You may specify a queue as:
- Outbound sequential
- Outbound steady
- Inbound sequential
- Inbound steady
Use this XML configuration for the jmscqin bundle. I’ve added the cqinerror
engine to run alongside the cqin
engine.
wasJmsSecurity-1.0
wasJmsServer-1.0
Use this XML configuration for the jmscqout bundle. I’ve added cqouterror
engine to run alongside the cqout
engine.
wasJmsSecurity-1.0
wasJmsServer-1.0
The jmssqout bundle runs the sqout
engine alone.
wasJmsSecurity-1.0
wasJmsServer-1.0
The jmssqin bundle runs the sqin
engine alone.
wasJmsSecurity-1.0
wasJmsServer-1.0
Now you’ll need the service that has been created for these bundles. Primarily, the bundles will create pods, providers, and routes. Since it’s inside the cluster, we are able to use the service for our remoteServerAddress
. Word: Your remoteServerAddress
have to be within the following format:
remoteServerAddress="--.mas--manage.svc:7276:BootstrapBasicMessaging"
remoteServerAddress="masivt810x-wkspivt810x-jmsscqin.mas-masivt810x-manage.svc:7276:BootstrapBasicMessaging"
Alternatively, you’ll be able to go to your OpenShift GUI and get the hostname routing created on the service. Use this because the remoteServerAddress
. You may get the names of the pods and providers by working these instructions:
$ oc get svc |grep jms
masivt810x-wkspivt810x-jmscqin ClusterIP None 9080/TCP,443/TCP,7276/TCP,7286/TCP 23h
masivt810x-wkspivt810x-jmscqout ClusterIP None 9080/TCP,443/TCP,7276/TCP,7286/TCP 23h
masivt810x-wkspivt810x-jmssqin ClusterIP None 9080/TCP,443/TCP,7276/TCP,7286/TCP 23h
masivt810x-wkspivt810x-jmssqout ClusterIP None 9080/TCP,443/TCP,7276/TCP,7286/TCP 23h
$ oc get pods |grep jms
masivt810x-wkspivt810x-jmscqin-0 1/1 Working 0 23h
masivt810x-wkspivt810x-jmscqout-0 1/1 Working 0 23h
masivt810x-wkspivt810x-jmssqin-0 1/1 Working 0 23h
masivt810x-wkspivt810x-jmssqout-0 1/1 Working 0 23h
You may as well examine your maxinst
pods to see if the jmsstore
listing was created by working this command:
oc exec -n mas-masivt810x-manage $(oc get -n mas-masivt810x-manage -l mas.ibm.com/appType=maxinstudb --no-headers=true pods -o identify | awk -F "https://dzone.com/" '{print $2}') -- ls -ltrh /jmsstore/
whole 0
drwxr-x---. 2 1001040000 root 0 Jul 3 11:20 cqin
drwxr-x---. 2 1001040000 root 0 Jul 3 11:27 cqout
drwxr-x---. 2 1001040000 root 0 Jul 3 11:28 sqout
drwxr-x---. 2 1001040000 root 0 Jul 3 11:29 sqin
In case you have the Maximo MEA bundle, you should utilize the XML file beneath. In case you have a single server (all) bundle, change maximomea
to maximo-all
within the XML.
jndi-1.0
wasJmsClient-2.0
jmsMdb-3.2
mdb-3.2
In case you have UI, report, and cron bundles, use this XML:
jndi-1.0
wasJmsClient-2.0
jmsMdb-3.2
mdb-3.2
Our XML has the next checklist of jmsQueueConnectionFactory
JNDI names from the offered XML:
- jms/maximo/int/cf/intcf-01
- jms/maximo/int/cf/intcf-02
- jms/maximo/int/cf/intcf-03
- jms/maximo/int/cf/intcf-04
We are going to use these jmsQueueConnectionFactory
JNDI names for the exterior methods in Maximo. Add or modify the queues for sqin
, sqout
, cqin
, cqinerr
, cqouterr
, and notf
.
You may go to Motion on the Add/Modify dialog and examine the queues. You shouldn’t encounter any errors.
Conclusion
All of the JMS queue ( cqin
, cgout
, sqin
, and sqout
) messages must be written to a devoted folder created inside a dad or mum jmsstore
folder. Therefore, we must always have the ability to delete a single queue (everlasting and log) file at any time limit with out impacting the opposite queues.