Question & Answer
Question
How can I use an Outbound Continuous Queue in the Integration Framework to improve the performance when sending transactions to an external system?
Answer
NOTE: due to the multi-threaded nature of a Continuous Queue that the order of messages being sent from Maximo to an External System using this method CANNOT be guaranteed.
The following instructions assume the JMS configuration outlined in the Installation Guide that can be found in the 7.1 and 7.5 Info Centres for WebSphere Application Server.
First create the Service Integration Bus Destination for the Continuous Outbound Queue
1. From the WebSphere® Application Server Network Deployment Administrative Console, click Service Integration > Buses to open the Buses dialog box.
2. Click intjmsbus to open the Buses > intjmsbus dialog box.
3. Click Destinations under Destination resources to open the Buses > intjmsbus > Destinations dialog box.
4. Click New to open the Create new destination dialog box.
5. Leave Queue checked as the destination type, and click Next to open the Create new queue dialog box.
6. Type CQOUTBD in the Identifier field and Continuous Queue Outbound in the Description field, then click Next to open the Create a new queue for point-to-point messaging dialog box.
7. Select the Bus Member pull-down and choose Node=ctgNode01:Server=MXServer as the bus member that will store and process messages for the CQOUTBD bus destination queue.
8. Click Next to open the Confirm queue creation dialog box.
9. Review your selections, then click Finish to complete the creation of the CQOUTBD bus destination queue.
10. Navigate the path Buses > intjmsbus > Destinations, then click CQOUTBD to open the configuration dialog box.
11. Click None as the Exception destination value. It is at this point you would specify an Exception Destination or Error Queue for CQOUT if you so wished.
12. Click Apply.
13. Click Save.
Now create the Continuous Outbound JMS Queue:
1. From the WebSphere® Application Server Network Deployment administrative console, click Resources > JMS > Queues.
2. From the Scope drop-down list, select Cell=ctgCell01.
3. Click New.
4. Verify that the Default Messaging Provider is selected and click OK.
5. Enter the following information, and click OK.
Name Enter CQOUT.
This value must contain only uppercase letters.
JNDI name Enter jms/maximo/int/queues/cqout
Bus name Select intjmsbus.
Queue name Select CQOUTBD
6. Click OK.
7. Click Save
Create JMS Activation Specification for the Outbound Continuos Queue
1. From the WebSphere® Application Server Network Deployment administrative console, click Resources > JMS > Activation Specifications.
2. From the Scope drop-down list, select Cell=ctgCell01.
3. Click New.
4. Select Default messaging provider and then click OK.
5. Enter the following information, and then click OK.
Name intjmsactout
This value is case-sensitive. This value must be lower-case.
JNDI name intjmsactout
Destination type Queue
Destination JNDI name jms/maximo/int/queues/cqout
Bus name intjmsbus
Maximum concurrent MDB invocations per endpoint 10
6. Click OK, and then click Save.
Enable the MDBs and Queue Destination Processor in the Application XML files.
First map the Activation Specification to necessary EJB.
Open the <maximo_root>\applications\maximo\mboejb\ejbmodule\META-INF\ibm-ejb-jar-bnd.xmi
Add the below text BEFORE the closing tag:
<!-- MEA MDB OUT -->
<ejbBindings xmi:type="ejbbnd:MessageDrivenBeanBinding" xmi:id="MessageDrivenBeanBinding_1" activationSpecJndiName="intjmsactout">
<enterpriseBean xmi:type="ejb:MessageDriven" href="META-INF/ejb-jar.xml#MessageDriven_JMSContQueueProcessor_OUT"/>
</ejbBindings>
This maps the Activation Specification created above to an MDB. Now we need to map the MDB to the appropriate processing class.
Edit the Following file:
<maximo_root>\applications\maximo\mboejb\ejbmodule\META-INF\ejb-jar.xml
Search for the <!-- MEA MDB section
At the end of this section add this:
<message-driven id="MessageDriven_JMSContQueueProcessor_OUT">
<ejb-name>JMSContQueueProcessor-OUT</ejb-name>
<ejb-class>psdi.iface.jms.JMSContQueueProcessor</ejb-class>
<transaction-type>Container</transaction-type>
<message-destination-type>javax.jms.Queue</message-destination-type>
<env-entry>
<env-entry-name>MESSAGEPROCESSOR</env-entry-name>
<env-entry-type>java.lang.String </env-entry-type>
<env-entry-value>psdi.iface.jms.QueueToDestManagerProcessor</env-entry-value>
</env-entry>
</message-driven>
This maps the new MDB ID to the processing class that sends a message on this Queue to the Outbound Handler.
Search in the same file again for <!-- MEA MDB and at the end of this second section add this:
<!-- MEA MDB OUT -->
<container-transaction>
<method>
<ejb-name>JMSContQueueProcessor-OUT</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
Then save and rebuild and redeploy the Maximo Ear file making sure you restart all Application servers. Attached are sample files showing the configuration changes.
Add and register the Queue in the External Systems Application in Maximo
Sign in to Maximo and click GoTo, Integration, External Systems
Click the Icon to Create a New External System, now click Select Actions Add/Modify Queues.
In the Queue JNDI Name field enter: jms/maximo/int/queues/cqout
In the Queue Connection Factory enter: jms/maximo/int/cf/intcf
Uncheck the Sequential and Inbound check boxes and enter 5 in the Maximum Try Count. Click OK.
Now pick this Queue in the Inbound Sequential Queue dialog box.
Choose an End Point and Enable the External System.
From the Publish Channel tab choose a Publish Channel then Enable and do a Test Export to make sure the Queue is working.
Note:
Please note that this is a custom solution and is not tested or supported by IBM Maximo Integration team.
Was this topic helpful?
Document Information
Modified date:
17 June 2018
UID
swg21587459