| <?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 |
| <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> |
| <parameter name="retry.http.status.codes">500, 504</parameter> |
| <parameter name="retry.interval">1000</parameter> |
| </messageProcessor> |
| </definitions> |
| </div> |
| <subsection name="Objective"> |
| <p> |
| Introduction to Synapse Scheduled Message Forwarding Processor with following advance parameters |
| <ul> |
| <li>max.deliver.attempts</li> |
| <li>max.deliver.drop</li> |
| <li>retry.http.status.codes</li> |
| <li>retry.interval</li> |
| </ul> |
| </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> |
| <p> |
| Message Forwarding Processor by default do not retry for application level failures. It only retries by default when |
| there is a network level failure. But if the user wants retry based on the application level failures, user can use |
| "retry.http.status.codes" configuration to do so. Please note that in this context application level failures refers to |
| HTTP error responses. For instance, in the above example Message Forwarding Processor retries not only for transport |
| level failures but also for application level failures such as Internal Server Error (500) and Gateway timeout (504). |
| </p> |
| <p> |
| Message Forwarding Processor sends messages to the back-end with the interval configured using "interval" parameter. |
| However, when there is a failure, Message Forwarding Processor goes to retry mode. When retrying, |
| Message Forwarding Processor sends the message to the back-end with the interval configured using "retry.interval" |
| parameter. Similar to "interval" "retry.interval" value must be set in milli seconds. In the case of setting |
| a non-integer value, makes Message Forwarding Processor set the default value to "retry.interval", which is 1000ms. |
| </p> |
| </subsection> |
| </section> |
| <p> |
| <a href="../samples.html">Back to Catalog</a> |
| </p> |
| </body> |
| </document> |