[jboss-svn-commits] JBL Code SVN: r14205 - in labs/jbossesb/trunk/product: rosetta/src/org/jboss/soa/esb/services/persistence and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Aug 14 10:14:53 EDT 2007


Author: kurt.stam at jboss.com
Date: 2007-08-14 10:14:52 -0400 (Tue, 14 Aug 2007)
New Revision: 14205

Modified:
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStore.java
   labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/persistence/RedeliverStore.java
   labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/internal/soa/esb/persistence/format/db/DBMessageStoreImpl.java
   labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/soa/esb/actions/MessagePersister.java
   labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/soa/esb/actions/MessageRedeliverer.java
   labs/jbossesb/trunk/product/services/jbossesb/src/main/resources/META-INF/jboss-esb.xml
   labs/jbossesb/trunk/product/services/jbossesb/src/test/java/org/jboss/soa/esb/esb/persistence/tests/ScheduledRedeliveryUnitTest.java
   labs/jbossesb/trunk/product/services/jbossesb/src/test/java/org/jboss/soa/esb/esb/persistence/tests/config-01.xml
Log:
JBESB-581 making max-deliveries configurable, adding a copy of the message to the DLQ when syncDelivery fails. Adding some more methods to the MessageStore.

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java	2007-08-14 13:05:04 UTC (rev 14204)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/client/ServiceInvoker.java	2007-08-14 14:14:52 UTC (rev 14205)
@@ -188,7 +188,18 @@
     public Message deliverSync(Message message, long timeoutMillis) throws MessageDeliverException, RegistryException, FaultMessageException {
         AssertArgument.isNotNull(message, "message");
         syncPickupDeliveryTimeout.set(timeoutMillis);
-        return post(message, true);
+        try {
+            message = post(message, true);
+        } catch (MessageDeliverException mde) {
+            if ("true".equalsIgnoreCase(Configuration.getRedeliveryDlsOn())
+                    && !service.equals(dlqService)) {
+                //Send a copy to the DLQ, no retries for syncDeliveries
+                message.getProperties().setProperty(DELIVER_TO, service);
+                deliverToDeadLetterService(message);
+            }
+            throw mde;
+        }
+        return message;
     }
 
     /**

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStore.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStore.java	2007-08-14 13:05:04 UTC (rev 14204)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/persistence/MessageStore.java	2007-08-14 14:14:52 UTC (rev 14205)
@@ -34,7 +34,7 @@
     public final static String CLASSIFICATION_DEFAULT  = "STORE";
     public final static String CLASSIFICATION_DLQ      = "DLQ";
     public final static String CLASSIFICATION_RDLVR    = "RDLVR";
-    public final static String MESSAGE_STORE_URI       = "message-store-uri";
+    public final static String MESSAGE_URI             = "org.jboss.soa.esb.messagestore.message-uri";
     
  
     /**

Modified: labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/persistence/RedeliverStore.java
===================================================================
--- labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/persistence/RedeliverStore.java	2007-08-14 13:05:04 UTC (rev 14204)
+++ labs/jbossesb/trunk/product/rosetta/src/org/jboss/soa/esb/services/persistence/RedeliverStore.java	2007-08-14 14:14:52 UTC (rev 14205)
@@ -14,8 +14,8 @@
     public static final String DELIVER_COUNT           = "org.jboss.soa.esb.deliver.count";
     public static final String IS_REDELIVERY           = "org.jboss.soa.esb.deliver.isRedelivery";
     
-    public int getMaxRedeliverCount();
-    public void setMaxRedeliverCount(int maxRedeliverCount);
+    public Integer getMaxRedeliverCount();
+    public void setMaxRedeliverCount(Integer maxRedeliverCount);
     /**
      * Tries to redeliver the message to it's destination. If delivery successfull the message record
      * is removed from the message store.

Modified: labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/internal/soa/esb/persistence/format/db/DBMessageStoreImpl.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/internal/soa/esb/persistence/format/db/DBMessageStoreImpl.java	2007-08-14 13:05:04 UTC (rev 14204)
+++ labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/internal/soa/esb/persistence/format/db/DBMessageStoreImpl.java	2007-08-14 14:14:52 UTC (rev 14205)
@@ -54,7 +54,7 @@
 
 	protected ConnectionManager mgr = null;
     
-    private int maxRedeliverCount = 10;
+    private Integer maxRedeliverCount = 10;
 	
 	protected MessageURIGenerator uriGenerator = new DefaultMessageURIGenerator();
 
@@ -319,7 +319,7 @@
                         insert(uuid, message, MessageStore.CLASSIFICATION_RDLVR, "FALSE", con);
                     } else {
                         Integer redeliverCount = (Integer) message.getProperties().getProperty(DELIVER_COUNT);
-                        if (redeliverCount < maxRedeliverCount) {
+                        if (redeliverCount < maxRedeliverCount || maxRedeliverCount < 0) {
                             //up the count
                             message.getProperties().setProperty(RedeliverStore.DELIVER_COUNT, ++redeliverCount);
                             insert(uuid, message, MessageStore.CLASSIFICATION_RDLVR, "FALSE", con);
@@ -435,11 +435,11 @@
     }
     
 
-    public int getMaxRedeliverCount() {
+    public Integer getMaxRedeliverCount() {
         return maxRedeliverCount;
     }
 
-    public void setMaxRedeliverCount(int maxRedeliverCount) {
+    public void setMaxRedeliverCount(Integer maxRedeliverCount) {
         this.maxRedeliverCount = maxRedeliverCount;
     }
 

Modified: labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/soa/esb/actions/MessagePersister.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/soa/esb/actions/MessagePersister.java	2007-08-14 13:05:04 UTC (rev 14204)
+++ labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/soa/esb/actions/MessagePersister.java	2007-08-14 14:14:52 UTC (rev 14205)
@@ -46,7 +46,7 @@
     
     protected ConfigTree config;
     protected MessageStore messageStore;
-    private String classification;
+    protected String classification;
 	private Logger log = Logger.getLogger(this.getClass());
 
 	public MessagePersister(ConfigTree config) throws ConfigurationException
@@ -65,7 +65,7 @@
                 classification = String.valueOf(message.getProperties().getProperty(MessageStore.CLASSIFICATION));
             }
             URI uri = messageStore.addMessage(message, classification);
-            message.getProperties().setProperty(MessageStore.MESSAGE_STORE_URI, uri);
+            message.getProperties().setProperty(MessageStore.MESSAGE_URI, uri);
         } catch (MessageStoreException mse) {
             log.error("Could not store message.", mse);
         }
@@ -108,6 +108,22 @@
             log.error("Could obtain messages.", mse);
         }
         return message;
-    } 
+    }
     
+    public Message getMessage(Message message) throws ActionProcessingException
+    {
+        if (message.getProperties().getProperty(MessageStore.MESSAGE_URI)!=null) {
+            URI uid = (URI) message.getProperties().getProperty(MessageStore.MESSAGE_URI);
+            try {
+                //the message can override the classification
+                message = messageStore.getMessage(uid);
+            } catch (MessageStoreException mse) {
+                log.error("Could obtain messages.", mse);
+            } 
+        } else {
+            log.error("Required property " + MessageStore.MESSAGE_URI + " is missing");
+        }
+        return message;
+    }
+    
 }

Modified: labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/soa/esb/actions/MessageRedeliverer.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/soa/esb/actions/MessageRedeliverer.java	2007-08-14 13:05:04 UTC (rev 14204)
+++ labs/jbossesb/trunk/product/services/jbossesb/src/main/java/org/jboss/soa/esb/actions/MessageRedeliverer.java	2007-08-14 14:14:52 UTC (rev 14205)
@@ -40,13 +40,10 @@
 
 public class MessageRedeliverer extends MessagePersister
 {
-    public final static String MESSAGE_STORE_CLASS = "message-store-class";
-    public final static String CLASSIFICATION_ATTR = "classfication";
+    public final static String MAX_REDELIVER_ATTR = "max-redeliveries";
     
-    
-    protected ConfigTree config;
     protected RedeliverStore redeliverStore;
-    private String classification;
+    protected Integer maxRedeliver;
 	private Logger log = Logger.getLogger(this.getClass());
 
 	public MessageRedeliverer(ConfigTree config) throws ConfigurationException
@@ -57,6 +54,11 @@
     public void initialise() throws ActionLifecycleException {
         super.initialise();
         redeliverStore = (RedeliverStore) messageStore;
+        String maxRedeliverStr   = config.getAttribute(MAX_REDELIVER_ATTR);
+        if (maxRedeliverStr!=null) {
+            maxRedeliver = Integer.valueOf(maxRedeliverStr);
+            redeliverStore.setMaxRedeliverCount(maxRedeliver);
+        }
     }
     
     public Message process(Message message) throws ActionProcessingException

Modified: labs/jbossesb/trunk/product/services/jbossesb/src/main/resources/META-INF/jboss-esb.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbossesb/src/main/resources/META-INF/jboss-esb.xml	2007-08-14 13:05:04 UTC (rev 14204)
+++ labs/jbossesb/trunk/product/services/jbossesb/src/main/resources/META-INF/jboss-esb.xml	2007-08-14 14:14:52 UTC (rev 14205)
@@ -51,7 +51,9 @@
                 <scheduled-listener name="redeliver-scheduled-listener" scheduleidref="5-min-trigger" composer="org.jboss.soa.esb.schedule.RedeliverEventMessageComposer" />
             </listeners>
             <actions>
-                <action name="RedeliverMessagesAction" class="org.jboss.soa.esb.actions.MessageRedeliverer" />
+                <action name="RedeliverMessagesAction" class="org.jboss.soa.esb.actions.MessageRedeliverer">
+                	<property name="max-redeliveries" value="20"/>
+                </action>
             </actions>			
         </service>
       </services>

Modified: labs/jbossesb/trunk/product/services/jbossesb/src/test/java/org/jboss/soa/esb/esb/persistence/tests/ScheduledRedeliveryUnitTest.java
===================================================================
--- labs/jbossesb/trunk/product/services/jbossesb/src/test/java/org/jboss/soa/esb/esb/persistence/tests/ScheduledRedeliveryUnitTest.java	2007-08-14 13:05:04 UTC (rev 14204)
+++ labs/jbossesb/trunk/product/services/jbossesb/src/test/java/org/jboss/soa/esb/esb/persistence/tests/ScheduledRedeliveryUnitTest.java	2007-08-14 14:14:52 UTC (rev 14205)
@@ -41,8 +41,10 @@
 import org.jboss.internal.soa.esb.services.registry.MockRegistry;
 import org.jboss.soa.esb.ConfigurationException;
 import org.jboss.soa.esb.Service;
+import org.jboss.soa.esb.actions.MessageRedeliverer;
 import org.jboss.soa.esb.client.ServiceInvoker;
 import org.jboss.soa.esb.common.Configuration;
+import org.jboss.soa.esb.helpers.ConfigTree;
 import org.jboss.soa.esb.listeners.lifecycle.ManagedLifecycleException;
 import org.jboss.soa.esb.message.Message;
 import org.jboss.soa.esb.message.format.MessageFactory;
@@ -73,6 +75,13 @@
         ESBConfigUtil configUtil = new ESBConfigUtil(getClass().getResourceAsStream("config-01.xml"));
         String config = configUtil.getListenerConfig("simple-schedule-listener").toString();
         assertNotNull(config);
+        try {
+            ConfigTree tree = ConfigTree.fromXml(config);
+            String maxDeliveries = tree.getFirstChild("action").getAttribute(MessageRedeliverer.MAX_REDELIVER_ATTR);
+            assertEquals(maxDeliveries, "9");
+        } catch (SAXException e) {
+            fail(e.getMessage());
+        }
     }
 
     @Test
@@ -94,8 +103,6 @@
             e.printStackTrace();
             fail(e.getMessage());
         }
-
-        
     }
 
     private void runTestConfig(String configName, long upTime) throws ParamRepositoryException, ConfigurationException, ManagedLifecycleException, SAXException, InterruptedException {

Modified: labs/jbossesb/trunk/product/services/jbossesb/src/test/java/org/jboss/soa/esb/esb/persistence/tests/config-01.xml
===================================================================
--- labs/jbossesb/trunk/product/services/jbossesb/src/test/java/org/jboss/soa/esb/esb/persistence/tests/config-01.xml	2007-08-14 13:05:04 UTC (rev 14204)
+++ labs/jbossesb/trunk/product/services/jbossesb/src/test/java/org/jboss/soa/esb/esb/persistence/tests/config-01.xml	2007-08-14 14:14:52 UTC (rev 14205)
@@ -13,7 +13,9 @@
                 <scheduled-listener name="simple-schedule-listener" scheduleidref="1-sec-trigger" composer="org.jboss.soa.esb.schedule.RedeliverEventMessageComposer" />
             </listeners>
             <actions>
-                <action name="RedeliverMessagesAction" class="org.jboss.soa.esb.actions.MessageRedeliverer" />
+                <action name="RedeliverMessagesAction" class="org.jboss.soa.esb.actions.MessageRedeliverer">
+                	<property name="max-redeliveries" value="9"/>
+                </action>
             </actions>			
         </service>
     </services>




More information about the jboss-svn-commits mailing list