• 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();
                }
            }
    
        }
    }

    结果:

     
  • 相关阅读:
    UVa 12235 状压DP Help Bubu
    UVa 1407 树形背包 Caves
    UVa 11552 DP Fewest Flops
    webgl helloworld
    webgl 初识2
    laya3d 文件格式
    webgl 初识1
    HTTP消息头(HTTP headers)-常用的HTTP请求头与响应头
    gulp 定义依赖关系
    你真的了解内存泄露吗?
  • 原文地址:https://www.cnblogs.com/itmu89/p/7565553.html
Copyright © 2020-2023  润新知