Example #1
0
        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);
            }
        }
Example #2
0
        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);
             }
         }
     }
 }
Example #4
0
        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));
 }
Example #7
0
 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();
        }
Example #9
0
        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));
            }
        }
Example #10
0
        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();
        }
Example #12
0
        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();
                    }
                }));
            }
        }
Example #13
0
 public Publisher(MongoQueue <string> workerQueue)
 {
     WorkerQueue = workerQueue;
 }