RabbitMQ消息发送/接收
作者:佚名 发表时间:2019-08-16 15:05:14
 /// <summary>
        /// 连接配置
        /// </summary>
        private static readonly ConnectionFactory rabbitMqFactory = new ConnectionFactory()
        {
            HostName = "172.18.0.88",
            UserName = "admin",
            Password = "admin123",
            Port = 5673,
            VirtualHost = "order"
        };
        //队列名称
        const string exchange = "yujiajun";
        const string queueName = "auth";
 /// <summary>
        ///  发送
        /// </summary>
        public static void SendMsg()
        {
            using (IConnection conn = rabbitMqFactory.CreateConnection())
            {
                using (IModel channel = conn.CreateModel())
                {
                    //在MQ上定义一个持久化队列,如果名称相同不会重复创建
                    channel.QueueDeclare(queueName, true, false, false, null);
                    for (int i = 0; i < 100; i++)
                    {
                        string message = string.Format("Message_{0}", i);
                        byte[] buffer = Encoding.UTF8.GetBytes(message);
                        var properties = channel.CreateBasicProperties();
                        properties.Persistent = true;
                        channel.BasicPublish("", queueName, properties, buffer);
                        Console.WriteLine("消息发送成功:" + message);
                    }
                }
            }
        }
   /// <summary>
        /// 接收
        /// </summary>
        public static void ReadMsg1()
        {
            IConnection conn = rabbitMqFactory.CreateConnection();

            IModel channel = conn.CreateModel();

            channel.BasicQos(0, 1, false);
            //在MQ上定义一个持久化队列,如果名称相同不会重复创建
            channel.QueueDeclare(queueName, true, false, false, null);

            //在队列上定义一个消费者
            EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
            consumer.Received += (model, body) =>
            {
                string msg = Encoding.UTF8.GetString(body.Body);
                Console.WriteLine(msg);
                channel.BasicAck(body.DeliveryTag, false);
            };
            channel.BasicConsume(queueName, false, consumer);
        }