当前位置:   article > 正文

基于C#的RabbitMQ consumer测试用例_c#rabbitmq 测试报告

c#rabbitmq 测试报告

基于C#的RabbitMQ consumer测试用例

1. Client安装
C#中开发相应的应用,需要RabbitMQ.Client, 由于在不同的.netcore 和.netframe的支持下,需要的控件版本不一样,需要基于系统安装的基础环境进行相应的选择,比如我使用的Visual Studio 2015,不支持V6.2.4,通过查询,安装的为V5.0.0.
相应版本的支持环境要求可通过如下链接查询。
https://www.nuget.org/packages/RabbitMQ.Client
通过NuGet terminal的安装可以通过选择正群版本后的指令拷贝后执行。

Install-Package RabbitMQ.Client -Version 5.2.0
  • 1

2.程序开发
在进行RabbitMQ通信时,需要进行如下操作。

  • 系统需要通过connection建立连接,在建立连接时刻,如下参数需要提供
    HostName - 主机IP
    Port - 端口号
    UserName- 用户名
    Password - 密码
  • 需要进行Exchange, Queue, Routingkey的配置
  • 建立相应的consumer
  • 建立通道

具体的代码如下:

           var factory = new ConnectionFactory();
            factory.HostName = "10.10.10.11";//主机名,Rabbit会拿这个IP生成一个endpoint,这个很熟悉吧,就是socket绑定的那个终结点。
            factory.Port = 5672; //端口号,RabbitMQ默认为5672
            factory.UserName = "admin";//默认用户名,用户可以在服务端自定义创建,有相关命令行
            factory.Password = "admin";//默认密码
            using (var connection = factory.CreateConnection())
            {
                using (var channel = connection.CreateModel())
                {
                    channel.ExchangeDeclare(exchange: "test.topic", type: "topic", durable: true);
                    var queueName = channel.QueueDeclare(queue: "1111", durable: true, autoDelete: false, exclusive: false);
                    
                    channel.QueueBind(queue: queueName,
                                      exchange: "misplus.topic",
                                      routingKey: "test.#");

                    /* 这里定义了一个消费者,用于消费服务器接受的消息
                     * C#开发需要注意下这里,在一些非面向对象和面向对象比较差的语言中,是非常重视这种设计模式的。
                     * 比如RabbitMQ使用了生产者与消费者模式,然后很多相关的使用文章都在拿这个生产者和消费者来表述。
                     * 但是,在C#里,生产者与消费者对我们而言,根本算不上一种设计模式,他就是一种最基础的代码编写规则。
                     * 所以,大家不要复杂的名词吓到,其实,并没那么复杂。
                     * 这里,其实就是定义一个EventingBasicConsumer类型的对象,然后该对象有个Received事件,
                     * 该事件会在服务接收到数据时触发。
                     */
                    var consumer = new EventingBasicConsumer(channel);//消费者
                    channel.BasicConsume(queueName, true, consumer);//消费消息
                    consumer.Received += (model, ea) =>
                    {
                        var body = ea.Body;
                        //var message = Encoding.UTF8.GetString(body);
                        var code = Encoding.UTF7.GetString(body);
                        var message = Encoding.ASCII.GetString(body);
                        var routingKey = ea.RoutingKey;
                        Console.WriteLine(" [x] Received '{0}':'{1}'",
                                          routingKey,
                                          message);
                    };
                    for (int i = 0; i < 10000; i++)
                    {
                        channel.QueueDeclare(queue: "1111", durable: true, autoDelete: false, exclusive: false);
                        var properties = channel.CreateBasicProperties();
                        Thread.Sleep(3000);
                    }
                }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/994095
推荐阅读
相关标签
  

闽ICP备14008679号