/// <summary> /// Constructor for specifying a Discrete Instance of RBroker /// </summary> /// <param name="brokerConfig">Discrete Broker Configuration object</param> /// <remarks></remarks> public DiscreteTaskBroker(DiscreteBrokerConfig brokerConfig) : base((RBrokerConfig)brokerConfig) { m_rClient = RClientFactory.createClient(brokerConfig.deployrEndpoint, brokerConfig.maxConcurrentTaskLimit); if (brokerConfig.userCredentials != null) { m_rUser = m_rClient.login(brokerConfig.userCredentials); } else { m_rUser = null; } /* * Prep the base RBrokerEngine. */ initEngine(brokerConfig.maxConcurrentTaskLimit); /* * Initialize the resourceTokenPool with Integer * based resourceTokens. */ for (int i = 0; i < brokerConfig.maxConcurrentTaskLimit; i++) { m_resourceTokenPool.TryAdd(i); } }
public static 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()); } }
/// <summary> /// Constructor for specifying a Discrete Instance of RBroker /// </summary> /// <param name="brokerConfig">Discrete Broker Configuration object</param> /// <remarks></remarks> public DiscreteTaskBroker(DiscreteBrokerConfig brokerConfig) : base((RBrokerConfig) brokerConfig) { m_rClient = RClientFactory.createClient(brokerConfig.deployrEndpoint, brokerConfig.maxConcurrentTaskLimit); if(brokerConfig.userCredentials != null) { m_rUser = m_rClient.login(brokerConfig.userCredentials); } else { m_rUser = null; } /* * Prep the base RBrokerEngine. */ initEngine(brokerConfig.maxConcurrentTaskLimit); /* * Initialize the resourceTokenPool with Integer * based resourceTokens. */ for(int i=0; i< brokerConfig.maxConcurrentTaskLimit; i++) { m_resourceTokenPool.TryAdd(i); } }
public static void Execute() { try { /* * 1. Create RBroker instance using RBrokerFactory. * * This example creates an anonymous DiscreteTaskBroker. */ DiscreteBrokerConfig brokerConfig = new DiscreteBrokerConfig(Program.DEPLOYR_ENDPOINT, null, 5); RBroker rBroker = RBrokerFactory.discreteTaskBroker(brokerConfig); /* * 2. Create an instance of RTaskAppSimulator. It will drive * RTasks through the RBroker. */ SampleAppSimulation simulation = new SampleAppSimulation(rBroker); /* * 3. Launch RTaskAppSimulator simulation. */ rBroker.simulateApp(simulation); /* * 4. Block until all tasks are complete, and shutdown has been called */ rBroker.waitUntilShutdown(); } catch(Exception tex) { Console.WriteLine("constructor: ex=" + tex.ToString()); } }
/// <summary> /// Utility function for creating a Discrete Instance of RBroker /// </summary> /// <param name="brokerConfig">Discrete Broker Configuration object</param> /// <returns>DiscreteTaskBroker instance</returns> /// <remarks></remarks> public static RBroker discreteTaskBroker(DiscreteBrokerConfig brokerConfig) { return new DiscreteTaskBroker(brokerConfig); }
public static 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("DiscretePolling: submitted " + rTask + " for execution on RBroker."); /* * 4. Demonstrate polling for an RTask result. */ while(!rTaskToken.isDone()) { Console.WriteLine("DiscretePolling: polling, " + "result not yet available, sleeping, will try again in 1 second."); try { Thread.Sleep(1000); } catch(Exception iex) { Console.WriteLine("Interupted exception: ex=" + iex.ToString()); } } /* * 5. RTaskToken indicates RTask is done. We can now * retrieve the result. */ Console.WriteLine("DiscretePolling: polling indicates result is now available."); /* * 6. RTask is done, retrieve the RTaskResult. * * 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("DiscretePolling: " + rTask + " completed, result=" + rTaskResult.getTimeOnCall()); } catch(Exception tex) { Console.WriteLine("DiscretePolling: ex=" + tex.ToString()); } finally { /* * Final Step: Shutdown RBroker to release * all associated resources, connections. */ if(rBroker != null) { rBroker.shutdown(); Console.WriteLine("DiscretePolling: rBroker has been shutdown."); } } }
/// <summary> /// Utility function for creating a Discrete Instance of RBroker /// </summary> /// <param name="brokerConfig">Discrete Broker Configuration object</param> /// <returns>DiscreteTaskBroker instance</returns> /// <remarks></remarks> public static RBroker discreteTaskBroker(DiscreteBrokerConfig brokerConfig) { return(new DiscreteTaskBroker(brokerConfig)); }