<?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 501</title>
    </properties>
    <body>
        <section name="Sample 501: Event Source with Static Subscriptions">
            <div class="xmlConf">&lt;definitions xmlns="http://ws.apache.org/ns/synapse"&gt;

    &lt;eventSource name="SampleEventSource"&gt;
        &lt;subscriptionManager
                class="org.apache.synapse.eventing.managers.DefaultInMemorySubscriptionManager"&gt;
            &lt;!--property name="registryURL" value="http://localhost:8180/wso2registry"/&gt;
          &lt;property name="username" value="admin"/&gt;
          &lt;property name="password" value="admin"/--&gt;
            &lt;property name="topicHeaderName" value="Topic"/&gt;
            &lt;property name="topicHeaderNS" value="http://apache.org/aip"/&gt;
        &lt;/subscriptionManager&gt;
        &lt;subscription id="mysub1"&gt;
            &lt;filter source="synapse/event/test"
                    dialect="http://synapse.apache.org/eventing/dialect/topicFilter"/&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&gt;
            &lt;/endpoint&gt;
        &lt;/subscription&gt;
        &lt;subscription id="mysub2"&gt;
            &lt;filter source="synapse/event/test"
                    dialect="http://synapse.apache.org/eventing/dialect/topicFilter"/&gt;
            &lt;endpoint&gt;
                &lt;address uri="http://localhost:9000/services/SimpleStockQuoteService"/&gt;
            &lt;/endpoint&gt;
            &lt;expires&gt;2020-06-27T21:07:00.000-08:00&lt;/expires&gt;
        &lt;/subscription&gt;
    &lt;/eventSource&gt;

    &lt;sequence name="PublicEventSource"&gt;
        &lt;log level="full"/&gt;
        &lt;eventPublisher eventSourceName="SampleEventSource"/&gt;
    &lt;/sequence&gt;

    &lt;proxy name="EventingProxy"&gt;
        &lt;target inSequence="PublicEventSource"/&gt;
    &lt;/proxy&gt;

&lt;/definitions&gt;</div>
            <subsection name="Objective">
                <p>
                    Showcase how to use a predefined set of static subscriptions with Synapse
                </p>
            </subsection>
            <subsection name="Pre-requisites">
                <p>
                    <ul>
                        <li>
                            Deploy the SimpleStockQuoteService in the sample Axis2 server and start Axis2
                        </li>
                        <li>
                            Start Synapse using the configuration numbered 501 (repository/conf/sample/synapse_sample_501.xml)
                            <div class="command">
                                Unix/Linux: sh synapse.sh -sample 501<br/>
                                Windows: synapse.bat -sample 501
                            </div>
                        </li>
                    </ul>
                </p>
            </subsection>
            <subsection name="Executing the Client">
                <p>
                    In this sample configuration, two static subscriptions are created by providing the 
                    SimpleStockQuoteService as the event sink. To try this out, invoke the sample
                    client as follows.
                </p>
                <div class="command">ant eventsender</div>
                <p>
                    Events will be mediated and sent to the sample Axis2 server as operated by the
                    two static subscriptions.
                </p>
            </subsection>
        </section>
        <p><a href="../samples.html">Back to Catalog</a></p>        
    </body>
</document>