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">&lt;!-- Introduction to Message Forwarding 
Processor With max deliver attempt and drop
+                the message after max deliver attempt--&gt;
+                &lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;
+                &lt;endpoint name="StockQuoteServiceEp"&gt;
+                &lt;address 
uri="http://localhost:9000/services/SimpleStockQuoteService"&gt;
+                &lt;suspendOnFailure&gt;
+                &lt;errorCodes&gt;-1&lt;/errorCodes&gt;
+                &lt;progressionFactor&gt;1.0&lt;/progressionFactor&gt;
+                &lt;/suspendOnFailure&gt;
+                &lt;/address&gt;
+                &lt;/endpoint&gt;
+                &lt;sequence name="fault"&gt;
+                &lt;log level="full"&gt;
+                &lt;property name="MESSAGE" value="Executing default 'fault' 
sequence"/&gt;
+                &lt;property name="ERROR_CODE" 
expression="get-property('ERROR_CODE')"/&gt;
+                &lt;property name="ERROR_MESSAGE" 
expression="get-property('ERROR_MESSAGE')"/&gt;
+                &lt;/log&gt;
+                &lt;drop/&gt;
+                &lt;/sequence&gt;
+                &lt;sequence name="main"&gt;
+                &lt;in&gt;
+                &lt;log level="full"/&gt;
+                &lt;property name="FORCE_SC_ACCEPTED" value="true" 
scope="axis2"/&gt;
+                &lt;property name="OUT_ONLY" value="true"/&gt;
+                &lt;property name="target.endpoint" 
value="StockQuoteServiceEp"/&gt;
+                &lt;store messageStore="MyStore"/&gt;
+                &lt;/in&gt;
+                &lt;description&gt;The main sequence for the message 
mediation&lt;/description&gt;
+                &lt;/sequence&gt;
+                &lt;messageStore name="MyStore"/&gt;
+                &lt;messageProcessor
+                
class="org.apache.synapse.message.processors.forward.ScheduledMessageForwardingProcessor"
+                name="ScheduledProcessor" messageStore="MyStore"&gt;
+                &lt;parameter name="interval"&gt;10000&lt;/parameter&gt;
+                &lt;parameter 
name="max.deliver.attempts"&gt;3&lt;/parameter&gt;
+                &lt;parameter name="max.deliver.drop"&gt;true&lt;/parameter&gt;
+                &lt;/messageProcessor&gt;
+                &lt;/definitions&gt;
+            </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


Reply via email to