[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