RabbitMQ 入门系列:3、基础编码:官方SDK的引用、链接创建、单例改造、发送消息、接收消息。

系列目录

RabbitMQ 入门系列:1、MQ的应用场景的选择与RabbitMQ安装。

RabbitMQ 入门系列:2、基础含义:链接、通道、队列、交换机。

RabbitMQ 入门系列:3、基础含义:持久化、排它性、自动删除、强制性、路由键。

RabbitMQ 入门系列:4、基础编码:官方SDK使用:链接创建、单例改造、发送消息、接收消息。

RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。

RabbitMQ 入门系列:6、保障消息:不丢失:发送方、Rabbit存储端、接收方。

RabbitMQ 入门系列:7、保障消息:不重复消费:产生消息的唯一ID。

RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。

RabbitMQ 入门系列:9、扩展内容:死信队列:真不适合当延时队列。

RabbitMQ 入门系列:10、扩展内容:延时队列:延时队列插件及其有限的适用场景。

前言:

本篇介绍官方提供的SDK:Rabbit.Client的简单使用,本篇尽量使用最简代码,以便初学者能快速理解与掌握。

1、项目中Nuget引入Rabbit.Client:

RabbitMQ 入门系列:3、基础编码:官方SDK的引用、链接创建、单例改造、发送消息、接收消息。

 

2、创建链接:(用户名密码自行调整)

using RabbitMQ.Client;  var factory = new ConnectionFactory() {     HostName = "127.0.0.1",     UserName = "guest",     Password = "guest",     VirtualHost = "/" };  var connection = factory.CreateConnection();

如果是Web应用中使用,这里需要把它改造成单例使用。

3、单例改造:

class Rabbit {     ConnectionFactory factory;     private Rabbit()     {         factory = new ConnectionFactory()         {             HostName = "127.0.0.1",             UserName = "guest",             Password = "guest",             VirtualHost = "/"         };     }     private IConnection _Connection;     public IConnection DefaultConnection     {         get         {             if (_Connection == null)             {                 _Connection = factory.CreateConnection();             }             return _Connection;         }     }     public static Rabbit Instance = new Rabbit(); }

4、发送消息:(创建FirstQueue队列)

using RabbitMQ.Client; using System.Text;  using (var channel = Rabbit.Instance.DefaultConnection.CreateModel()) {     channel.QueueDeclare("FirstQueue", false, false, false);     channel.BasicPublish("", "FirstQueue", false, null, Encoding.UTF8.GetBytes("这是要发送的内容")); }

RabbitMQ 入门系列:3、基础编码:官方SDK的引用、链接创建、单例改造、发送消息、接收消息。

5、发送消息:批量发送

using (var channel = Rabbit.Instance.DefaultConnection.CreateModel()) {     channel.QueueDeclare("FirstQueue", false, false, false);     //channel.BasicPublish("", "FirstQueue", false, null, Encoding.UTF8.GetBytes("这是要发送的内容"));     var pub= channel.CreateBasicPublishBatch();     pub.Add("", "FirstQueue", false, null, Encoding.UTF8.GetBytes("这是批量要发送的内容1"));     pub.Add("", "FirstQueue", false, null, Encoding.UTF8.GetBytes("这是批量要发送的内容2"));     pub.Add("", "FirstQueue", false, null, Encoding.UTF8.GetBytes("这是批量要发送的内容3"));     pub.Publish(); }

RabbitMQ 入门系列:3、基础编码:官方SDK的引用、链接创建、单例改造、发送消息、接收消息。

6、接收消息:(接收消息要保持通道一直开,所以不能关闭)

using RabbitMQ.Client; using System.Text;  var channel = Rabbit.Instance.DefaultConnection.CreateModel();  var consumer = new EventingBasicConsumer(channel); consumer.Received += (model, ea) => {     var message = Encoding.UTF8.GetString(ea.Body.ToArray());     Console.WriteLine("收到默认消息 {0}", message); }; channel.BasicConsume("FirstQueue",true,consumer);

RabbitMQ 入门系列:3、基础编码:官方SDK的引用、链接创建、单例改造、发送消息、接收消息。

 

 

总结:

本篇介绍RabbitMQ最简代码的使用,方便入门与理解。

RabbitMQ 入门系列:1、MQ的应用场景的选择与RabbitMQ安装。

RabbitMQ 入门系列:2、基础含义:链接、通道、队列、交换机。

RabbitMQ 入门系列:3、基础含义:持久化、排它性、自动删除、强制性、路由键。

RabbitMQ 入门系列:4、基础编码:官方SDK使用:链接创建、单例改造、发送消息、接收消息。

RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。

RabbitMQ 入门系列:6、保障消息:不丢失:发送方、Rabbit存储端、接收方。

RabbitMQ 入门系列:7、保障消息:不重复消费:产生消息的唯一ID。

RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。

RabbitMQ 入门系列:9、扩展内容:死信队列:真不适合当延时队列。

RabbitMQ 入门系列:10、扩展内容:延时队列:延时队列插件及其有限的适用场景。

RabbitMQ 入门系列:1、MQ的应用场景的选择与RabbitMQ安装。

RabbitMQ 入门系列:2、基础含义:链接、通道、队列、交换机。

RabbitMQ 入门系列:3、基础含义:持久化、排它性、自动删除、强制性、路由键。

RabbitMQ 入门系列:4、基础编码:官方SDK使用:链接创建、单例改造、发送消息、接收消息。

RabbitMQ 入门系列:5、基础编码:交换机的进阶介绍及编码方式。

RabbitMQ 入门系列:6、保障消息:不丢失:发送方、Rabbit存储端、接收方。

RabbitMQ 入门系列:7、保障消息:不重复消费:产生消息的唯一ID。

RabbitMQ 入门系列:8、扩展内容:接收信息时:可否根据RoutingKey过滤监听信息,答案是不能。

RabbitMQ 入门系列:9、扩展内容:死信队列:真不适合当延时队列。

RabbitMQ 入门系列:10、扩展内容:延时队列:延时队列插件及其有限的适用场景。

发表评论

评论已关闭。

相关文章