赞
踩
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通信时,需要进行如下操作。
具体的代码如下:
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); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。