package bluemix;
import java.io.File;
import java.math.BigInteger;
import java.util.HashMap;
import java.util.Map;
import com.ibm.streamsx.topology.Topology;
import com.ibm.streamsx.topology.context.AnalyticsServiceProperties;
import com.ibm.streamsx.topology.context.JobProperties;
import com.ibm.streamsx.topology.context.StreamsContext;
import com.ibm.streamsx.topology.context.StreamsContext.Type;
import com.ibm.streamsx.topology.context.StreamsContextFactory;
import com.ibm.streamsx.topology.jobconfig.JobConfig;
/**
* Sample demonstrating submission of a topology
* to Streaming Analytic Service on Bluemix.
*
*/
public class Submit2StreamingAnalyticService {
public static void main(String[] args) throws Exception {
String vcapFile = args[0];
String serviceName = args[1];
/*
* Create a simple topology, focus of the
* sample is the submission of the job
* to the service.
*
* This topology is just like simple.HelloWorld
* with different values printed to the console log.
*/
Topology topology = new Topology("Submit2StreamingAnalyticService");
topology.strings(
"Hello", "Streaming Analytic Service",
serviceName, "running on IBM Bluemix").print();
// Require a configuration object.
Map<String,Object> config = new HashMap<>();
// Here the VCAP_SERVICES information is in a local file
// (as serialized JSON)
config.put(AnalyticsServiceProperties.VCAP_SERVICES, new File(vcapFile));
// Explicitly state which service is the job will be submitted to
// The service must be in the Streaming Analytic Service section
// of the VCAP services.
config.put(AnalyticsServiceProperties.SERVICE_NAME, serviceName);
// Optionally we can specify a job name
// (note job names must be unique within the instance).
JobConfig jco = new JobConfig();
jco.setJobName("BluemixSubmitSample");
config.put(JobProperties.CONFIG, jco);
// Submit to the ANALYICS_SERVICE context
@SuppressWarnings("unchecked")
StreamsContext<BigInteger> context =
(StreamsContext<BigInteger>) StreamsContextFactory.getStreamsContext(Type.STREAMING_ANALYTICS_SERVICE);
BigInteger jobId = context.submit(topology, config).get();
System.out.println("Submitted job with jobId=" + jobId);
}
}