Thursday, August 22, 2019

Error Retry on Queue

The Batch framework allows retry of errors, is there a similar setting for Queue's for FAIL transactions?

In order to see the retry in the logs we need to enable Step #1

1.       Log onto WAS Console: Goto Troubleshooting-> Logs and Trace-> Server1-> Change Log Level Detail and add the bolded text.
*=info: com.dwl.*=warning: com.ibm.mdm.*=warning: com.ibm.mdm.server.config.*=info: com.ibm.mdm.common.brokers.*=info: com.ibm.mdm.mds.*=info: com.initiatesystems.*=info: com.dwl.base.report.mbean.TransactionDataListener=fine: com.dwl.jmsadapter.mdb.*=info
  
2.       SQL
UPDATE CONFIGELEMENT SET VALUE = ' SQLCODE=-911,SQLCODE=-913,ORA-00370,ORA-02049,ORA-00060,SQLCODE=-968,SQLCODE=-803, SQLCODE=-723'
, LAST_UPDATE_DT = CURRENT_TIMESTAMP WHERE NAME = '/IBM/DWLCommonServices/ErrorHandling/retryErrorStringList';

UPDATE CONFIGELEMENT SET VALUE = '12,2037,4930, 109,10506,49359',
LAST_UPDATE_DT = CURRENT_TIMESTAMP WHERE NAME = '/IBM/DWLCommonServices/ErrorHandling/retryErrorCodeList';


Once we set the error codes the retry should work automatically, do we have a setting to enable retries? This is a CM configuration, use sql to update it. 
If I add the log statement in WAS console then this retry information will be logged in trace.log? This should appear in SystemOut.log, not sure it will appear in trace.log. 

Reference:  

/IBM/MessagingAdapter/Exception/maxRetryLimit

·         Description: Determines how many times the Messaging Adapter attempts to reprocess a failed inbound request message by invoking DWLServiceController.
·         Default value3
·         Dynamic: true
If you want to see it in action, you will have to turn on INFO level logging for
com.dwl.jmsadapter.mdb.MDBRequestReceiverBean class

as the logging code is below

                               
                        

if(currentRetryCount <= getMaxRetryLimit(manager.getControl()) && manager.shouldRetry(e)) {
                                
                        

if (logger.isInfoEnabled()) {
                               
                        

logger.info(ResourceBundleHelper.resolve(
                               
                        

ResourceBundleNames.MESSAGING_ADAPTER_STRINGS,
                               
                        

INFO_DWLJMSMessageProcessor_MessageRetry,
                               
                        

new Object[] {manager.getMessageId(), currentRetryCount}));
                                
                        

}
                               
                        

processMessage(manager, currentRetryCount);
                               
                        

}
                       

Reprocessing inbound messages in case of an error
When there is an error processing an inbound request message, Messaging Adapter can re-invoke the DWLServiceController to reprocess the request. You can define the error conditions that trigger the Messaging Adapter to re-invoke the DWLServiceController using the following properties in the Configuration and Management component:
/IBM/DWLCommonServices/ErrorHandling/retryErrorStringList
/IBM/DWLCommonServices/ErrorHandling/retryErrorCodeList

No comments: