Source code

    001/*
    002# Licensed Materials - Property of IBM
    003# Copyright IBM Corp. 2015
    004 */
    005package topic;
    006
    007import java.util.concurrent.TimeUnit;
    008
    009import com.ibm.streamsx.topology.Topology;
    010import com.ibm.streamsx.topology.context.StreamsContextFactory;
    011import com.ibm.streamsx.topology.streams.BeaconStreams;
    012
    013/**
    014 * Publishes a beacon stream on a topic.
    015 * A published stream can be subscribed to by
    016 * other applications. This allows multiple
    017 * applications to consume tuples from an
    018 * application. For example an application
    019 * that ingests & prepares data can be consumed
    020 * by multiple analytic applications.
    021 * <BR>
    022 * Multiple applications (or multiple streams within applications)
    023 * can publish to the same topic.
    024 * <BR>
    025 * Applications dynamically subscribe
    026 * to a published topic, so that new applications
    027 * that subscribe to a topic can be submitted at
    028 * any time.
    029 *
    030 * @see SubscribeBeacon Sample application that
    031 * subscribes to the topic published by this application
    032 * @see <a href="../../../spldoc/html/tk$com.ibm.streamsx.topology/ns$com.ibm.streamsx.topology.topic$1.html">Integration with SPL applications</a>
    033 */
    034public class PublishBeacon {
    035
    036    /**
    037     * Submit this application which publishes a stream.
    038     * @param args Command line arguments, accepts a single optional topic name.
    039     * @throws Exception Error running the application
    040     */
    041    public static void main(String[] args) throws Exception {
    042
    043        // Select the topic name for the command line
    044        // using '/beacon' if not supplied.
    045        String topic = "/beacon";
    046        String type = "DISTRIBUTED";
    047
    048        if (args.length >= 1)
    049            topic = "/" + args[0];
    050        if (args.length == 2)
    051            type = args[1];
    052
    053        Topology topology = new Topology("PublishBeacon");
    054
    055        /*
    056         * Publish a throttled beacon stream to a topic
    057         */
    058        BeaconStreams.beacon(topology).throttle(100, TimeUnit.MILLISECONDS)
    059                .publish(topic);
    060
    061        /*
    062         * Publish-Subscribe only works with distributed.
    063         */
    064        StreamsContextFactory.getStreamsContext(type)
    065                .submit(topology);
    066    }
    067}