系列目录

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:

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("这是要发送的内容"));
}

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

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最简代码的使用,方便入门与理解。

最新文章

  1. 攻城狮在路上(叁)Linux(十六)--- 命令与文件的查找
  2. 技术英文单词贴--R
  3. iScroll-js—“smooth scrolling for the web”
  4. zjuoj 3610 Yet Another Story of Rock-paper-scissors
  5. android button text属性中英文大小写问题
  6. MySQL(二)
  7. 1.1 MySQL 逻辑架构
  8. poj 1568 Find the Winning Move 极大极小搜索
  9. 【SQLite】使用事务处理带参数的插入
  10. sql 创建临时表
  11. ORACLE函数TO_CHAR以及数字转换格式[Z]
  12. 【Java入门提高篇】Day7 Java内部类——局部内部类
  13. mac android studio 出现 Error: SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.
  14. Div+Css画太极图源代码
  15. quartz实现定时功能实例详解(servlet定时器配置方法)
  16. 封装nodeJS中 $on $emit $off 事件
  17. 从零开始学 Web 之 Vue.js(六)Vue的组件
  18. Docker docker-compose安装
  19. [Wc]Dface双面棋盘()
  20. 强化学习基础算法入门 【PPT】

热门文章

  1. 迄今微软不同时期发布的SQL Server各版本之间的大致区别,供参考查阅
  2. 000 上传本地库到Github远程库过程全记录
  3. 如何利用 RPA 实现自动化获客?
  4. cve-2021-42287和cve-2021-42278漏洞复现
  5. Servlet之Request和Response 解析
  6. 编译调试Net6源码
  7. 零基础学Java(1)初识Java程序
  8. arcgis中栅格矢量计算技巧收藏
  9. antd vue 折叠面板 v-for 循环点击无效
  10. ABAP BAPI 复制标准项目模板实现项目立项