IBM Support

Create an Outbound Continuous JMS Queue

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.

ejb-jar.xmlejb-jar.xmlibm-ejb-jar-bnd.xmiibm-ejb-jar-bnd.xmi

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.

[{"Product":{"code":"SSLKT6","label":"IBM Maximo Asset Management"},"Business Unit":{"code":"BU055","label":"Cognitive Applications"},"Component":"MEA: Generic","Platform":[{"code":"PF002","label":"AIX"},{"code":"PF010","label":"HP-UX"},{"code":"PF016","label":"Linux"},{"code":"PF027","label":"Solaris"},{"code":"PF033","label":"Windows"}],"Version":"7.5;7.6","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SSWT9A","label":"IBM Control Desk"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":" ","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SSLKTY","label":"Maximo Asset Management for IT"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":" ","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SSKTXT","label":"Tivoli Change and Configuration Management Database"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":" ","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}},{"Product":{"code":"SS6HJK","label":"Tivoli Service Request Manager"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Component":" ","Platform":[{"code":"","label":""}],"Version":"","Edition":"","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Document Information

Modified date:
17 June 2018

UID

swg21587459