基于C#的RabbitMQ consumer测试用例

基于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

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);
                    }
                }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值