示例#1
0
文件: Program.cs 项目: redrik234/RP
        private static void AddToQueue(VowelConsCount count, IModel model)
        {
            model.ExchangeDeclare("vowel-consonant-counter", ExchangeType.Direct);
            string message = "VCCmessage:" + count.getId() + ":" + count.getVowel() + ":" + count.getConsonant();
            var    body    = Encoding.UTF8.GetBytes(message);

            model.BasicPublish(
                exchange: "vowel-consonant-counter",
                routingKey: "text-rank-task",
                basicProperties: null,
                body: body
                );
        }
示例#2
0
文件: Program.cs 项目: redrik234/RP
        private static void RabbitListener()
        {
            string hostName = "localhost";

            IConnectionFactory factory = new ConnectionFactory
            {
                HostName = hostName
            };
            IConnection connection = factory.CreateConnection();
            IModel      channel    = connection.CreateModel();

            channel.ExchangeDeclare(exchange: inputExchangeName,
                                    type: ExchangeType.Direct);

            string queueName = "count-task";

            channel.QueueDeclare(queueName, false, false, false, null);
            channel.QueueBind(queue: queueName,
                              exchange: inputExchangeName,
                              routingKey: "text-rank-task");

            var consumer = new EventingBasicConsumer(channel);

            consumer.Received += (model, ea) =>
            {
                var    body  = ea.Body;
                string id    = Encoding.UTF8.GetString(body);
                string value = GetValueByKeyAndHostName(id, hostName);

                VowelConsCount count = VowelConsCounter(id, value);

                AddToQueue(count, channel);

                Console.WriteLine("Id:" + count.getId() + " count: " + count.getVowel() + "/" + count.getConsonant());
            };
            channel.BasicConsume(queue: queueName,
                                 autoAck: true,
                                 consumer: consumer);
            Console.ReadLine();
        }