コード例 #1
0
        static void Main(string[] args)
        {
            var repo     = new TextRepository();
            var messages = new TextMessages();

            Console.WriteLine("Listening for ExchangeText event, press Ctrl+C to stop...");
            messages.ConsumeMessagesInLoop(TextMessages.QueueTextListener, TextMessages.ExchangeText, (model, id) => {
                var text = repo.GetText(id);
                Console.WriteLine(id + ": " + text);
            });
        }
コード例 #2
0
        static void Main(string[] args)
        {
            int remainingAccepts = processingLimit;

            var messages = new TextMessages();
            var repo     = new TextRepository();
            var metrics  = new TextMetrics();

            Console.WriteLine("Listening for ExchangeText/ExchangeTextSuccessMarked events, press Ctrl+C to stop...");

            using (var connection = messages.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    messages.ListenMessages(channel, TextMessages.QueueTextProcessingLimiter, TextMessages.ExchangeText, (model, id) => {
                        Console.WriteLine("captured text '" + repo.GetText(id) + "' with id=" + id);
                        bool accepted = false;
                        if (remainingAccepts > 0)
                        {
                            --remainingAccepts;
                            accepted = true;
                        }
                        repo.SetTextStatus(id, accepted ? TextStatus.Accepted : TextStatus.Rejected);
                        messages.SendProcessingAccepted(id, accepted);
                    });
                    messages.ListenMessages(channel, TextMessages.QueueTextProcessingLimiterRevoke, TextMessages.ExchangeTextSuccessMarked, (model, json) => {
                        var message = TextSuccessMarkedMessage.FromJson(json);
                        repo.SetTextStatus(message.ContextId, TextStatus.Ready);
                        Console.WriteLine("revoke transaction for successful text '" + repo.GetText(message.ContextId) + "' with id=" + message.ContextId);
                        if (message.Success)
                        {
                            ++remainingAccepts;
                        }
                    });
                    while (true)
                    {
                        Thread.Sleep(Timeout.Infinite);
                    }
                }
        }
コード例 #3
0
        static void Main(string[] args)
        {
            var messages = new TextMessages();
            var repo     = new TextRepository();
            var metrics  = new TextMetrics();

            Console.WriteLine("Listening for ExchangeTextRankTask event, press Ctrl+C to stop...");
            messages.ConsumeMessagesInLoop(TextMessages.QueueVowelConsCounter, TextMessages.ExchangeTextRankTask, (model, id) => {
                try
                {
                    string text    = repo.GetText(id);
                    int vowelCount = metrics.GetVowelCount(text);
                    int consCount  = metrics.GetConsonantsCount(text);
                    messages.SendTextScoreTask(id, vowelCount, consCount);
                    Console.WriteLine(id + " vowel count: " + vowelCount + ", cons count: " + consCount);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("exception occured: " + ex.ToString());
                }
            });
        }
コード例 #4
0
        public string Get(string id)
        {
            var repo = new TextRepository();

            return(repo.GetText(id));
        }