IBM Support

What are the steps to configure the cqinerr exception destination for the continuous error queue in WebLogic?

Technical Blog Post


Abstract

What are the steps to configure the cqinerr exception destination for the continuous error queue in WebLogic?

Body

 

My previous blog outlines the steps briefly of how to set up a WebLogic environment for use with Maximo 7.x. 

 

https://www.ibm.com/developerworks/community/blogs/a9ba1efe-b731-4317-9724-a181d6155e3a/entry/setting_up_maximo_7_x_in_a_weblogic_v9_cluster_using_jms_queues_for_integration?lang=en

 

However, I noticed I was missing some information related to the continuous error queue, so that is included here as a separate entry to make it simpler to follow.

 

What are the steps to configure the cqinerr exception destination for the continuous error queue in WebLogic?  Below you can find those steps.

 

The cqinerr queue must be targetted to the same JMS Server and module as the primary continluous queue (cqinserver) in order to be able to route failed messages to it.

 

1.  Navigate in the WebLogic console to your existing JMS module

2. Add one more queue resource to it by clicking the New button.

a. Select the queue resource type radio button.

b. Select the existing cqin subdeployment, click next.

 

Parameter Value

Queue Name:  cqinerr

JNDI Name:  jms/maximo/int/queues/cqinerr

Subdeployment name:  cqin

 

3.  Next we need to navigate back to the cqin JMS queue to update the error destination information.  Navigate to your JMS module.

4.  From the list of defined resources, select the cqin queue.

5.  Click on the "Delivery Failure" tab

6.  Set the "Redelivery Limit" value to 5

7.  From the dropdown "Error Destination" dropdown, select the cqinerr queue

8.  Save and activate the changes.

 

Now we need to enabled the cqinerr MDB so that messages sent to that queue will be processed. 

 

Edit files under Maximo
1. locate the file under maximo/applications/maximo/mboejb/ejbmodule/meta-inf/ejb-jar.xml
2. Edit the file and make sure the following four sections are uncommented to look as they do below:

<!-- MEA MDB for error queue -->
<message-driven id="MessageDriven_JMSContQueueProcessor_2">
<ejb-name>JMSContQueueProcessor-2</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.QueueToMaximoProcessor</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>MDBDELAY</env-entry-name>
<env-entry-type>java.lang.Long </env-entry-type>
<env-entry-value>30000</env-entry-value>
</env-entry>
</message-driven>

<!-- MEA MDB for error queue -->
<container-transaction>
<method>
<ejb-name>JMSContQueueProcessor-2</ejb-name>
<method-name>*</method-name>
</method>
<trans-attribute>Required</trans-attribute>
</container-transaction>
 

3.  Locate the file in the same directory called weblogic-ejb-jar.xml and uncomment the following sections as shown below:

<!-- MEA MDB -->

  <weblogic-enterprise-bean>
    <ejb-name>JMSContQueueProcessor-1</ejb-name>
    <message-driven-descriptor>
      <pool>        
          <max-beans-in-free-pool>3</max-beans-in-free-pool>    
      </pool>      
      <destination-jndi-name>jms/maximo/int/queues/cqin</destination-jndi-name>
      <connection-factory-jndi-name>jms/maximo/int/cf/intcf</connection-factory-jndi-name>
    </message-driven-descriptor>
     <transaction-descriptor>
           <trans-timeout-seconds>600</trans-timeout-seconds>
     </transaction-descriptor>
     <jndi-name>JMSContQueueProcessor-1</jndi-name>
  </weblogic-enterprise-bean>


<!-- MEA MDB for error queue -->

  <weblogic-enterprise-bean>
    <ejb-name>JMSContQueueProcessor-2</ejb-name>
    <message-driven-descriptor>
      <pool>        
          <max-beans-in-free-pool>3</max-beans-in-free-pool>    
      </pool>      
      <destination-jndi-name>jms/maximo/int/queues/cqinerr</destination-jndi-name>
      <connection-factory-jndi-name>jms/maximo/int/cf/intcf</connection-factory-jndi-name>
    </message-driven-descriptor>
     <transaction-descriptor>
           <trans-timeout-seconds>600</trans-timeout-seconds>
    </transaction-descriptor>
    <jndi-name>JMSContQueueProcessor-2</jndi-name>
  </weblogic-enterprise-bean>

 

4.  Save and close the file.
5. Rebuild and redeploy the maximo.ear file in order to deploy the Error MDB.

Note that the Error MDB has a built-in redelivery delay which is 30 seconds by default.  For this reason, the redelivery delay override setting within the Weblogic console should not be changed and is not used as it was in previous releases to prevent performance problems.

 

[{"Business Unit":{"code":"BU005","label":"IoT"}, "Product":{"code":"SSLKT6","label":"Maximo Asset Management"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":""}]

UID

ibm11131555