[jboss-svn-commits] JBL Code SVN: r10478 - labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Mar 23 11:44:06 EDT 2007


Author: kevin.conner at jboss.com
Date: 2007-03-23 11:44:05 -0400 (Fri, 23 Mar 2007)
New Revision: 10478

Modified:
   labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
Log:
Added backoff mechanism

Modified: labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java
===================================================================
--- labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2007-03-23 15:28:09 UTC (rev 10477)
+++ labs/jbossesb/branches/JBESB_4_0_MP1/product/core/listeners/src/org/jboss/soa/esb/listeners/message/MessageAwareListener.java	2007-03-23 15:44:05 UTC (rev 10478)
@@ -64,12 +64,27 @@
          * serial version uid for this class
          */
         private static final long serialVersionUID = -9198018611828254359L;
+        
         /**
+         * The minimum error delay.
+         */
+        private static final long MIN_ERROR_DELAY = 1000 ;
+        /**
+         * The maximum error delay.
+         */
+        private static final long MAX_ERROR_DELAY = (MIN_ERROR_DELAY << 5) ;
+        
+        /**
          * The action pipeline.
          */
         private ActionProcessingPipeline pipeline ;
     
         /**
+         * The error delay.
+         */
+        private long errorDelay ;
+        
+        /**
 	 * public constructor
 	 * 
 	 * @param config
@@ -253,6 +268,7 @@
 		{
 			message = (maxWaitMillis > 0) ? _pickUpCourier
 					.pickup(maxWaitMillis) : null;
+                        errorDelay = 0 ;
 		}
 		catch (CourierTimeoutException e)
 		{
@@ -261,6 +277,22 @@
 		catch (CourierException e)
 		{
 			_logger.error("Courier Exception", e);
+                        try
+                        {
+                            if (errorDelay == 0)
+                            {
+                                errorDelay = MIN_ERROR_DELAY ;
+                            }
+                            else if (errorDelay < MAX_ERROR_DELAY)
+                            {
+                                errorDelay <<= 1 ;
+                            }
+                            Thread.sleep(errorDelay) ;
+                        }
+                        catch (final InterruptedException ie)
+                        {
+                            Thread.currentThread().interrupt() ;
+                        }
 			return;
 		}
 




More information about the jboss-svn-commits mailing list