public static void Main() { Console.WriteLine("QueryWorkerApp starting..."); CloudFoundryMongoBinder binder = new CloudFoundryMongoBinder(); MongoQueue <string> collectorQueue = new MongoQueue <string>(binder.Url, binder.DatabaseName, "collector_queue", 32000); MongoQueue <string> workerQueue = new MongoQueue <string>(binder.Url, binder.DatabaseName, "worker_queue", 32000); try { while (true) { Console.WriteLine("Waiting..."); string result = workerQueue.Receive(); Console.WriteLine("Received " + result); collectorQueue.Send(binder.AppPort + ":" + result.ToUpper()); Console.WriteLine("Back to top of loop"); } } catch (Exception e) { Console.WriteLine("Query worker exiting after exception: " + e); } }
public void SendResults() { CloudFoundryMongoBinder binder = new CloudFoundryMongoBinder(); MongoQueue <string> collectorQueue = new MongoQueue <string>(binder.Url, binder.DatabaseName, "collector_queue", 32000); try { while (true) { Console.WriteLine("Waiting for data..."); string userData = collectorQueue.Receive(); Console.WriteLine("Received " + userData); Clients.Caller.addNewMessageToPage(userData); Console.WriteLine("Data written"); } } catch (Exception e) { Console.WriteLine("Exception caught, ResultsCollector closing: " + e); } }
public sealed override void DoStuff() { using (MongoQueue <TaskMessage> queue = new MongoQueue <TaskMessage>(ConfigurationManager.AppSettings["mongodbqueue"], 1000000)) { if (Strategy == MiningStrategy.UntilLastPageNum) { for (int i = 1; i <= LastPageNum; i += Step) { string url = string.Format(ListPageUrl, i); var msg = CreatePageTask(this.Name, url); queue.Send(msg); } } else { int i = 1; string url = string.Format(ListPageUrl, i); HttpRequestContentExtractor ce = new HttpRequestContentExtractor(HttpMethod.GET, null); while (ce.Goto(url)) { var msg = CreatePageTask(this.Name, url); queue.Send(msg); i += Step; url = string.Format(ListPageUrl, i); } } } }
static void Main(string[] args) { Console.WriteLine(); Console.WriteLine("******* Collector starting ********"); CloudFoundryMongoBinder binder = new CloudFoundryMongoBinder(); MongoQueue <string> collectorQueue = new MongoQueue <string>(binder.Url, binder.DatabaseName, "collector_queue", 32000); server = new WebSocketServer(); bool successfulSetup = server.Setup(Convert.ToInt32(binder.AppPort.Value)); Console.WriteLine("Server setup complete"); server.NewMessageReceived += server_NewMessageReceived; server.NewSessionConnected += server_NewSessionConnected; bool successfulStart = server.Start(); Console.WriteLine("Server started"); while (true) { Console.WriteLine("Waiting for data...<"); string userData = collectorQueue.Receive(); Console.WriteLine(userData + "> writing to client..."); SendToClient(userData); Console.WriteLine("data written"); } }
public void Close_removes_the_item() { var q = new MongoQueue(db, "Q1"); q.Push(new BsonDocument()); var item = q.Pop(); collection.Count().ShouldEqual(1); item.Close(); collection.Count().ShouldEqual(0); }
public void Recurring_schedules_get_repeated() { var q = new MongoQueue(db, "Q1"); q.Push(new BsonDocument(), new Schedule { Repeat = Repeat.Custom, NextRun = DateTime.UtcNow.AddMinutes(-1) }); q.Pop().Reschedule(DateTime.UtcNow.AddMinutes(30)); var doc = collection.FindOneAs<BsonDocument>(); var meta = doc["MongoQueue"].AsBsonDocument; meta.Contains("Machine").ShouldEqual(false); meta["Schedule"].ToBsonDocument()["NextRun"].AsDateTime.ShouldBeInRange(DateTime.UtcNow.AddMinutes(29), DateTime.UtcNow.AddMinutes(30)); }
public override void DoStuff() { using (MongoQueue <TaskMessage> queue = new MongoQueue <TaskMessage>(ConfigurationManager.AppSettings["mongodbqueue"], 1000000)) { for (int i = StartPageNo; i <= EndPageNo; i++) { var msg = CreatePageTask(this.Name, string.Format(UrlTemplate, i)); queue.Send(msg); } } }
public void Pop_gets_expired_items() { var q1 = new MongoQueue(db, "Q1"); q1.Push(new BsonDocument { { "goodbye", "2" } }); var item = q1.Pop(); item.ShouldNotBeNull(); q1.Pop().ShouldBeNull(); collection.Update(Query.Exists("MongoQueue.Machine"), Update.Set("MongoQueue.Schedule.NextRun", DateTime.UtcNow.AddMinutes(-31))); q1.Pop().ShouldNotBeNull(); }
static void Main(string[] args) { var options = new Options(); if (!CommandLine.Parser.Default.ParseArguments(args, options)) { return; } using (MongoQueue <TaskMessage> queue = new MongoQueue <TaskMessage>(ConfigurationManager.AppSettings["mongodbqueue"], 100000)) { queue.Send(CreateMsg(options)); } }
public ActionResult Publish(String userString) { Console.WriteLine("Publish starting..."); CloudFoundryMongoBinder binder = new CloudFoundryMongoBinder(); MongoQueue <string> workerQueue = new MongoQueue <string>(binder.Url, binder.DatabaseName, "worker_queue", 32000); Publisher publisher = new Publisher(workerQueue); publisher.Publish(userString); Console.WriteLine("... Publishing finished"); return(new EmptyResult()); }
public void Pop_gets_items_from_the_proper_queue_with_their_data() { var q1 = new MongoQueue(db, "Q1"); var q2 = new MongoQueue(db, "Q2"); q2.Push(new BsonDocument { { "hello", "1" } }); q1.Push(new BsonDocument { { "goodbye", "2" } }); q2.Push(new BsonDocument { { "hello", "3" } }); var item = q1.Pop(); item.ShouldNotBeNull(); item["goodbye"].AsString.ShouldEqual("2"); q1.Pop().ShouldBeNull(); }
static void PerformTimerOperation(Object stateInfo, ElapsedEventArgs args) { int workThreads = 0, completionThreads = 0; ThreadPool.GetAvailableThreads(out workThreads, out completionThreads); if (workThreads == 0) { return; } using (MongoQueue <TaskMessage> queue = new MongoQueue <TaskMessage>(ConfigurationManager.AppSettings["mongodbqueue"], 100000000)) { var msg = queue.Receive(); ThreadPool.QueueUserWorkItem(new WaitCallback(x => { if (msg != null) { logger.Info("initialize " + msg.ToString()); var task = TaskCreator.CreateInstance(msg); task.Run(); } })); } }
public Publisher(MongoQueue <string> workerQueue) { WorkerQueue = workerQueue; }