RabbitMQ 入门系列:3、基础编码:官方SDK的引用、链接创建、单例改造、发送消息、接收消息。
2024-08-28 05:29:38
系列目录
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最简代码的使用,方便入门与理解。
最新文章
- 攻城狮在路上(叁)Linux(十六)--- 命令与文件的查找
- 技术英文单词贴--R
- iScroll-js—“smooth scrolling for the web”
- zjuoj 3610 Yet Another Story of Rock-paper-scissors
- android button text属性中英文大小写问题
- MySQL(二)
- 1.1 MySQL 逻辑架构
- poj 1568 Find the Winning Move 极大极小搜索
- 【SQLite】使用事务处理带参数的插入
- sql 创建临时表
- ORACLE函数TO_CHAR以及数字转换格式[Z]
- 【Java入门提高篇】Day7 Java内部类——局部内部类
- 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.
- Div+Css画太极图源代码
- quartz实现定时功能实例详解(servlet定时器配置方法)
- 封装nodeJS中 $on $emit $off 事件
- 从零开始学 Web 之 Vue.js(六)Vue的组件
- Docker docker-compose安装
- [Wc]Dface双面棋盘()
- 强化学习基础算法入门 【PPT】