Author: vanji
Date: Mon Sep 11 17:20:21 2017
New Revision: 1808048
URL: http://svn.apache.org/viewvc?rev=1808048&view=rev
Log:
SYNAPSE-1049, SYNAPSE-1050 - Improvement on message processor to drop the
message after max delivery attempts
Added:
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample705.xml
synapse/trunk/java/repository/conf/sample/synapse_sample_705.xml
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingJob.java
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingProcessorConstants.java
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples.xml
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingJob.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingJob.java?rev=1808048&r1=1808047&r2=1808048&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingJob.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingJob.java
Mon Sep 11 17:20:21 2017
@@ -62,6 +62,9 @@ public class ForwardingJob implements St
ScheduledMessageForwardingProcessor.PROCESSOR_INSTANCE);
int maxDeliverAttempts = -1;
+
+ boolean isMaxDeliverAttemptDropEnabled = false;
+
String mdaParam = null;
if (parameters != null) {
mdaParam = (String)
parameters.get(MessageProcessorConsents.MAX_DELIVER_ATTEMPTS);
@@ -75,6 +78,13 @@ public class ForwardingJob implements St
processor.deactivate();
}
}
+ if (maxDeliverAttempts > 0 &&
parameters.get(ForwardingProcessorConstants.MAX_DELIVER_DROP) != null &&
+
parameters.get(ForwardingProcessorConstants.MAX_DELIVER_DROP).toString()
+ .equalsIgnoreCase("true")) {
+ //Configuration to continue the message processor even without
stopping the message processor
+ // after maximum number of delivery
+ isMaxDeliverAttemptDropEnabled = true;
+ }
// WE do not try to process if the processor is inactive or
// there is no message store attached.
@@ -199,7 +209,14 @@ public class ForwardingJob implements St
if (maxDeliverAttempts > 0) {
processor.incrementSendAttemptCount();
if (processor.getSendAttemptCount() >=
maxDeliverAttempts) {
- deactivate(processor, messageContext,
parameters);
+ if (isMaxDeliverAttemptDropEnabled) {
+ //Since explicitly enabled the message
drop after max delivery attempt
+ // message has been removed and reset
the delivery attempt count of the processor
+ processor.resetSentAttemptCount();
+ messageStore.poll();
+ } else {
+ deactivate(processor, messageContext,
parameters);
+ }
}
}
errorStop = true;
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingProcessorConstants.java
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingProcessorConstants.java?rev=1808048&r1=1808047&r2=1808048&view=diff
==============================================================================
---
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingProcessorConstants.java
(original)
+++
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/message/processors/forward/ForwardingProcessorConstants.java
Mon Sep 11 17:20:21 2017
@@ -60,4 +60,9 @@ public final class ForwardingProcessorCo
*/
public static final String DEACTIVATE_SEQUENCE =
"message.processor.deactivate.sequence";
+ /**
+ * Used to determine the message drop after maximum delivery
+ */
+ public static final String MAX_DELIVER_DROP = "max.deliver.drop";
+
}
Modified:
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples.xml?rev=1808048&r1=1808047&r2=1808048&view=diff
==============================================================================
---
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples.xml
(original)
+++
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples.xml
Mon Sep 11 17:20:21 2017
@@ -276,6 +276,7 @@
<li><a href="samples/sample702.html">Sample 702:
Introduction to Message Forwarding Processor</a></li>
<li><a href="samples/sample703.html">Sample 703:
Introduction to Message Resequencing Processor</a></li>
<li><a href="samples/sample704.html">Sample 704:
Invoke Secured Services with Scheduled Message Forwarding Processor</a></li>
+ <li><a href="samples/sample705.html">Sample 705:
Introduction to Message Forwarding Processor With Advance Parameters</a></li>
</ul>
</p>
</subsection>
Added:
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample705.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample705.xml?rev=1808048&view=auto
==============================================================================
---
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample705.xml
(added)
+++
synapse/trunk/java/modules/documentation/src/site/xdoc/userguide/samples/sample705.xml
Mon Sep 11 17:20:21 2017
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<document>
+ <properties>
+ <title>Apache Synapse - Sample 705</title>
+ </properties>
+ <body>
+ <section name="Sample 705: Introduction to Message Forwarding
Processor With Advance Parameters">
+ <div class="xmlConf"><!-- Introduction to Message Forwarding
Processor With max deliver attempt and drop
+ the message after max deliver attempt-->
+ <definitions xmlns="http://ws.apache.org/ns/synapse">
+ <endpoint name="StockQuoteServiceEp">
+ <address
uri="http://localhost:9000/services/SimpleStockQuoteService">
+ <suspendOnFailure>
+ <errorCodes>-1</errorCodes>
+ <progressionFactor>1.0</progressionFactor>
+ </suspendOnFailure>
+ </address>
+ </endpoint>
+ <sequence name="fault">
+ <log level="full">
+ <property name="MESSAGE" value="Executing default 'fault'
sequence"/>
+ <property name="ERROR_CODE"
expression="get-property('ERROR_CODE')"/>
+ <property name="ERROR_MESSAGE"
expression="get-property('ERROR_MESSAGE')"/>
+ </log>
+ <drop/>
+ </sequence>
+ <sequence name="main">
+ <in>
+ <log level="full"/>
+ <property name="FORCE_SC_ACCEPTED" value="true"
scope="axis2"/>
+ <property name="OUT_ONLY" value="true"/>
+ <property name="target.endpoint"
value="StockQuoteServiceEp"/>
+ <store messageStore="MyStore"/>
+ </in>
+ <description>The main sequence for the message
mediation</description>
+ </sequence>
+ <messageStore name="MyStore"/>
+ <messageProcessor
+
class="org.apache.synapse.message.processors.forward.ScheduledMessageForwardingProcessor"
+ name="ScheduledProcessor" messageStore="MyStore">
+ <parameter name="interval">10000</parameter>
+ <parameter
name="max.deliver.attempts">3</parameter>
+ <parameter name="max.deliver.drop">true</parameter>
+ </messageProcessor>
+ </definitions>
+ </div>
+ <subsection name="Objective">
+ <p>
+ Introduction to Synapse Scheduled Message Forwarding
Processor with advance parameters (max deliver
+ attempt and drop the message after max deliver attempt)
+ </p>
+ </subsection>
+ <subsection name="Pre-requisites">
+ <p>
+ <ul>
+ <li>
+ Start Synapse using the configuration numbered 705
(repository/conf/sample/synapse_sample_705.xml)
+ <div class="command">
+ Unix/Linux: sh synapse.sh -sample 705<br/>
+ Windows: synapse.bat -sample 705
+ </div>
+ </li>
+ </ul>
+ </p>
+ </subsection>
+ <subsection name="Executing the Client">
+ <p>
+ Execute the sample client a few times with the following
command.
+ </p>
+ <div class="command">
+ ant stockquote
-Daddurl=http://localhost:9000/services/SimpleStockQuoteService
-Dtrpurl=http://localhost:8280/ -Dmode=placeorder
+ </div>
+
+ <p>
+ When you start to send request to synapse from client, you
will see message forwarding processor without
+ getting deactivate it keep on processing. This is due to
the message will be dropped from the message store after
+ the maximum number of delivery attempts are made, and the
message processor will remain activated.
+
+ "max.deliver.drop" parameter would have no effect when no
value is specified for the Maximum Delivery Attempts parameter.
+ If this parameter is disabled, the undeliverable message
will not be dropped and the message processor will be deactivated.
+ </p>
+ </subsection>
+ </section>
+ <p>
+ <a href="../samples.html">Back to Catalog</a>
+ </p>
+ </body>
+</document>
Added: synapse/trunk/java/repository/conf/sample/synapse_sample_705.xml
URL:
http://svn.apache.org/viewvc/synapse/trunk/java/repository/conf/sample/synapse_sample_705.xml?rev=1808048&view=auto
==============================================================================
--- synapse/trunk/java/repository/conf/sample/synapse_sample_705.xml (added)
+++ synapse/trunk/java/repository/conf/sample/synapse_sample_705.xml Mon Sep 11
17:20:21 2017
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+ <!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one
+ ~ or more contributor license agreements. See the NOTICE file
+ ~ distributed with this work for additional information
+ ~ regarding copyright ownership. The ASF licenses this file
+ ~ to you under the Apache License, Version 2.0 (the
+ ~ "License"); you may not use this file except in compliance
+ ~ with the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing,
+ ~ software distributed under the License is distributed on an
+ ~ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ ~ KIND, either express or implied. See the License for the
+ ~ specific language governing permissions and limitations
+ ~ under the License.
+ -->
+
+<!-- Introduction to Synapse Scheduled Message Forwarding Processor with max
deliver attempt and drop the message after max deliver attempt -->
+
+<definitions xmlns="http://ws.apache.org/ns/synapse">
+
+ <endpoint name="StockQuoteServiceEp">
+ <address uri="http://localhost:9000/services/SimpleStockQuoteService">
+ <suspendOnFailure>
+ <errorCodes>-1</errorCodes>
+ <progressionFactor>1.0</progressionFactor>
+ </suspendOnFailure>
+ </address>
+ </endpoint>
+ <sequence name="fault">
+ <log level="full">
+ <property name="MESSAGE" value="Executing default 'fault'
sequence"/>
+ <property name="ERROR_CODE"
expression="get-property('ERROR_CODE')"/>
+ <property name="ERROR_MESSAGE"
expression="get-property('ERROR_MESSAGE')"/>
+ </log>
+ <drop/>
+ </sequence>
+ <sequence name="main">
+ <in>
+ <log level="full"/>
+ <property name="FORCE_SC_ACCEPTED" value="true" scope="axis2"/>
+ <property name="OUT_ONLY" value="true"/>
+ <property name="target.endpoint" value="StockQuoteServiceEp"/>
+ <store messageStore="MyStore"/>
+ </in>
+ <description>The main sequence for the message mediation</description>
+ </sequence>
+ <messageStore name="MyStore"/>
+ <messageProcessor
class="org.apache.synapse.message.processors.forward.ScheduledMessageForwardingProcessor"
name="ScheduledProcessor" messageStore="MyStore">
+ <parameter name="interval">10000</parameter>
+ <parameter name="max.deliver.attempts">3</parameter>
+ <parameter name="max.deliver.drop">true</parameter>
+ </messageProcessor>
+</definitions>
\ No newline at end of file