02C#操作rabbitmq

以前用过memcacheq、msmq、redis的list做队列,在用memcacheq的时候,还是在linux下,当然这个不是我安装的,我只是用c#操作而已,从那以后对队列处理并发能力有了新的认识,一点一点的使用过msmq,最近用的就是redis的list做队列,个人感觉redis适合中小企业,毕竟不是纯粹做队列的,好了,不说太多,继续rabbitmq。
1.环境:
windows7
vs2015
2.驱动rabbitmq.client
我直接使用nuget了,我用的版本4.1.3
 
3.代码
这次我就先不写帮助类了,以后rabbitmq文章里在用帮助类。
Program.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;

namespace RabbitMQTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Write();
            Console.WriteLine("==================================================");
            Read();
            Console.ReadLine();
        }
        /// <summary>
        /// 写入队列
        /// </summary>
        public static void Write()
        {
            var factory = new ConnectionFactory() { HostName = "127.0.0.1", UserName = "rbqtest", Password = "123456", Port= 5672 };
            using (var connection = factory.CreateConnection())
            using (var channel = connection.CreateModel())
            {
                channel.QueueDeclare(queue: "writeLog", durable: false, exclusive: false, autoDelete: false, arguments: null);
                for (int i = 0; i < 80; i++)
                {
                    string message = "皮皮虾皮皮虾皮皮虾皮皮虾皮皮虾皮皮虾" + i.ToString();
                    var body = Encoding.UTF8.GetBytes(message);

                    channel.BasicPublish(exchange: "", routingKey: "writeLog", basicProperties: null, body: body);
                    Console.WriteLine("Write {0}", message);
                }
            }
        }
        /// <summary>
        /// 读取队列
        /// </summary>
        public static void Read()
        {
            var factory = new ConnectionFactory()
            {
                HostName = "127.0.0.1",
                UserName = "rbqtest",
                Password = "123456",
                VirtualHost = "/"
            };
            using (var connection = factory.CreateConnection())
            using (var channel = connection.CreateModel())
            {
                channel.QueueDeclare(queue: "writeLog",
                    durable: false,
                    exclusive: false,
                    autoDelete: false,
                    arguments: null);

                var consumer = new EventingBasicConsumer(channel);
                consumer.Received += (model, ea) =>
                {
                    var body = ea.Body;
                    var message = Encoding.UTF8.GetString(body);
                    Console.WriteLine(" Read {0}", message);
                };
                channel.BasicConsume(queue: "writeLog",
                    noAck: true,
                    consumer: consumer);

                Console.WriteLine(" Press [enter] to exit.");
                Console.ReadLine();
            }
        }

    }
}

结果:

 

 
posted @ 2017-09-20 23:00  码大坑  阅读(233)  评论(0编辑  收藏  举报