static public void Execute() { try { /* * 1. Create RBroker instance using RBrokerFactory. * * This example creates a DiscreteTaskBroker. */ DiscreteBrokerConfig brokerConfig = new DiscreteBrokerConfig(Program.DEPLOYR_ENDPOINT); RBroker rBroker = RBrokerFactory.discreteTaskBroker(brokerConfig); /* * 2. Register RTaskListener for asynchronous * notifications on RTask completion. */ SampleTaskBrokerListener sampleListeners = new SampleTaskBrokerListener(rBroker); rBroker.addTaskListener(sampleListeners); rBroker.addBrokerListener(sampleListeners); /* * 3. Define RTask * * This example creates a DiscreteTask that will * execute an R script, /testuser/tutorial-rbroker/5SecondNoOp. */ RTask rTask = RTaskFactory.discreteTask(Program.TUTORIAL_NOOP_SCRIPT, Program.TUTORIAL_REPO_DIRECTORY, Program.TUTORIAL_REPO_OWNER, "", null); /* * 4. Submit RTask to RBroker for execution. * * The RTaskToken is returned immediately. You can * use the token to track the progress of RTask * and/or block while waiting for a result. * * However, in this example we are going to allow * the RTaskListener handle the result so * there is nothing further for us to do here after * we submit the RTask. */ RTaskToken rTaskToken = rBroker.submit(rTask); Console.WriteLine("DiscreteProfiling: submitted " + rTask + " for execution on RBroker."); } catch (Exception tex) { Console.WriteLine("DiscreteProfiling: ex=" + tex.ToString()); } }
/* * RTaskAppSimulator method. */ public void simulateApp(RBroker rBroker) { /* * 1. Prepare RTask(s) for simulation. * * In the example we will simply simulate the execution * a fixed number of RTask. * * Note, this is a somewhat artificial demo as we are * executing the same RTask SIMULATE_TOTAL_TASK_COUNT * times. You can experiment by modifying the * implementation to execute a range of RTask of * your own choosing. */ RTask rTask = RTaskFactory.discreteTask(Program.TUTORIAL_NOOP_SCRIPT, Program.TUTORIAL_REPO_DIRECTORY, Program.TUTORIAL_REPO_OWNER, "", null); /* * 2. Loop submitting SIMULATE_TOTAL_TASK_COUNT * task(s) to RBroker for execution. */ simulationStartTime = System.Environment.TickCount; for (int tasksPushedToBroker = 0; tasksPushedToBroker < SIMULATE_TOTAL_TASK_COUNT; tasksPushedToBroker++) { try { RTaskToken taskToken = rBroker.submit(rTask); Console.WriteLine("simulateApp: submitted task " + rTask + " for execution on RBroker."); } catch (Exception ex) { Console.WriteLine("simulateApp: ex=" + ex.ToString()); } } }
static public void Execute() { try { /* * 1. Create RBroker instance using RBrokerFactory. * * This example creates a BackgroundTaskBroker. */ RAuthentication rAuth = new RBasicAuthentication(Program.AUTH_USER_NAME, Program.AUTH_PASSWORD); BackgroundBrokerConfig brokerConfig = new BackgroundBrokerConfig(Program.DEPLOYR_ENDPOINT, rAuth); RBroker rBroker = RBrokerFactory.backgroundTaskBroker(brokerConfig); /* * 2. Register RTaskListener for asynchronous * notifications on RTask completion. */ BackgroundTaskListener myTaskListener = new BackgroundTaskListener(rBroker); rBroker.addTaskListener(myTaskListener); /* * 3. Define RTask * * This example creates a BackgroundTask that will * execute an artibrary block of R code. */ String rCode = "x <- rnorm(100)"; RTask rTask = RTaskFactory.backgroundTask("Example Background RTask", "Example background RTask.", rCode, null); /* * 4. Submit RTask to RBroker for execution. * * The RTaskToken is returned immediately. You can * use the token to track the progress of RTask * and/or block while waiting for a result. * * However, in this example we are going to allow * the RTaskListener handle the result so * there is nothing further for us to do here after * we submit the RTask. */ RTaskToken rTaskToken = rBroker.submit(rTask); Console.WriteLine("Submitted " + rTask + " for execution on RBroker."); /* * 4. Block until all tasks are complete, and shutdown has been called */ rBroker.waitUntilShutdown(); } catch (Exception tex) { Console.WriteLine("Runtime exception=" + tex.ToString()); } }
/* * RTaskAppSimulator method. */ public void simulateApp(RBroker rBroker) { /* * 2. Submit task(s) to RBroker for execution. */ Console.WriteLine("About to simulate " + SIMULATE_TOTAL_TASK_COUNT + " tasks at a rate of " + SIMULATE_TASK_RATE_PER_MINUTE + " tasks per minutes."); simulationStartTime = System.Environment.TickCount; for(int tasksPushedToBroker = 0; tasksPushedToBroker<SIMULATE_TOTAL_TASK_COUNT; tasksPushedToBroker++) { try { /* * 1. Prepare RTask for real-time scoring. * * In this example, we pass along a unique * customer ID with each RTask. In a real-world * application the input parameters on each RTask * will vary depending on need, such as customer * database record keys and supplimentary parameter * data to facilitate the scoring. */ PooledTaskOptions taskOptions = new PooledTaskOptions(); taskOptions.routputs.Add("score"); taskOptions.rinputs.Add(RDataFactory.createNumeric("customerid", tasksPushedToBroker)); RTask rTask = RTaskFactory.pooledTask(Program.TUTORIAL_RTSCORE_SCRIPT, Program.TUTORIAL_REPO_DIRECTORY, Program.TUTORIAL_REPO_OWNER, null, taskOptions); RTaskToken taskToken = rBroker.submit(rTask); Console.WriteLine("Submitted task " + rTask + "\n"); /* * If further tasks need to be pushed to broker * then delay for staggeredLoadInterval to simulate * control of task flow rate. */ if(tasksPushedToBroker < (SIMULATE_TOTAL_TASK_COUNT - 1)) { try { if(SIMULATE_TASK_RATE_PER_MINUTE != 0L) { int staggerLoadInterval = 60 / SIMULATE_TASK_RATE_PER_MINUTE; Thread.Sleep(staggerLoadInterval * 1000); } } catch(Exception iex) { Console.WriteLine("Runtime exception=" + iex.ToString()); } } } catch(Exception ex) { Console.WriteLine("Runtime exception=" + ex.ToString()); } } }
static public void Execute() { RBroker rBroker = null; try { /* * 1. Create RBroker instance using RBrokerFactory. * * This example creates a DiscreteTaskBroker. */ DiscreteBrokerConfig brokerConfig = new DiscreteBrokerConfig(Program.DEPLOYR_ENDPOINT); rBroker = RBrokerFactory.discreteTaskBroker(brokerConfig); /* * 2. Define RTask * * This example creates a DiscreteTask that will * execute an R script, /testuser/tutorial-rbroker/5SecondNoOp. */ RTask rTask = RTaskFactory.discreteTask(Program.TUTORIAL_NOOP_SCRIPT, Program.TUTORIAL_REPO_DIRECTORY, Program.TUTORIAL_REPO_OWNER, "", null); /* * 3. Submit RTask to RBroker for execution. * * Note, unlike an RClient.executeScript call or * an RProject.executeScript call the RBroker.submit * call is non-blocking. * * The RTaskToken is returned immediately. You can * use the token to track the progress of RTask * and/or block while waiting for a result. */ RTaskToken rTaskToken = rBroker.submit(rTask); Console.WriteLine("DiscreteBlocking: submitted " + rTask + " for execution on RBroker."); /* * 4. Demonstrate blocking for an RTask result. * * The call to getResult() will either return * an RTaskResult or raise an Exception. An Exception * indicates the RTask failed to complete and why. */ RTaskResult rTaskResult = rTaskToken.getResult(); Console.WriteLine("DiscreteBlocking: " + rTask + " completed, result=" + rTaskResult.getTimeOnCall()); } catch (Exception tex) { Console.WriteLine("DiscreteBlocking: error=" + tex.ToString()); } finally { /* * Final Step: Shutdown RBroker to release * all associated resources, connections. */ if (rBroker != null) { rBroker.shutdown(); Console.WriteLine("DiscreteBlocking: rBroker has been shutdown."); } } }
/* * RTaskAppSimulator method. */ public void simulateApp(RBroker rBroker) { /* * 1. Prepare RTask(s) for simulation. * * In the example we will simply simulate the execution * a fixed number of RTask. * * Note, this is a somewhat artificial demo as we are * executing the same RTask SIMULATE_TOTAL_TASK_COUNT * times. You can experiment by modifying the * implementation to execute a range of RTask of * your own choosing. */ RTask rTask = RTaskFactory.discreteTask(Program.TUTORIAL_NOOP_SCRIPT, Program.TUTORIAL_REPO_DIRECTORY, Program.TUTORIAL_REPO_OWNER, "", null); /* * 2. Loop submitting SIMULATE_TOTAL_TASK_COUNT * task(s) to RBroker for execution. */ simulationStartTime = System.Environment.TickCount; for(int tasksPushedToBroker = 0; tasksPushedToBroker<SIMULATE_TOTAL_TASK_COUNT; tasksPushedToBroker++) { try { RTaskToken taskToken = rBroker.submit(rTask); Console.WriteLine("simulateApp: submitted task " + rTask + " for execution on RBroker."); } catch(Exception ex) { Console.WriteLine("simulateApp: ex=" + ex.ToString()); } } }
/* * RTaskAppSimulator method. */ public void simulateApp(RBroker rBroker) { /* * 2. Submit task(s) to RBroker for execution. */ Console.WriteLine("About to simulate " + SIMULATE_TOTAL_TASK_COUNT + " tasks at a rate of " + SIMULATE_TASK_RATE_PER_MINUTE + " tasks per minutes."); simulationStartTime = System.Environment.TickCount; for (int tasksPushedToBroker = 0; tasksPushedToBroker < SIMULATE_TOTAL_TASK_COUNT; tasksPushedToBroker++) { try { /* * 1. Prepare RTask for real-time scoring. * * In this example, we pass along a unique * customer ID with each RTask. In a real-world * application the input parameters on each RTask * will vary depending on need, such as customer * database record keys and supplimentary parameter * data to facilitate the scoring. */ PooledTaskOptions taskOptions = new PooledTaskOptions(); taskOptions.routputs.Add("score"); taskOptions.rinputs.Add(RDataFactory.createNumeric("customerid", tasksPushedToBroker)); RTask rTask = RTaskFactory.pooledTask(Program.TUTORIAL_RTSCORE_SCRIPT, Program.TUTORIAL_REPO_DIRECTORY, Program.TUTORIAL_REPO_OWNER, null, taskOptions); RTaskToken taskToken = rBroker.submit(rTask); Console.WriteLine("Submitted task " + rTask + "\n"); /* * If further tasks need to be pushed to broker * then delay for staggeredLoadInterval to simulate * control of task flow rate. */ if (tasksPushedToBroker < (SIMULATE_TOTAL_TASK_COUNT - 1)) { try { if (SIMULATE_TASK_RATE_PER_MINUTE != 0L) { int staggerLoadInterval = 60 / SIMULATE_TASK_RATE_PER_MINUTE; Thread.Sleep(staggerLoadInterval * 1000); } } catch (Exception iex) { Console.WriteLine("Runtime exception=" + iex.ToString()); } } } catch (Exception ex) { Console.WriteLine("Runtime exception=" + ex.ToString()); } } }