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

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

时间:2022-08-22 11:48:03浏览次数:115  
标签:false 单例 FirstQueue 入门 RabbitMQ Rabbit channel 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:

 

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

标签:false,单例,FirstQueue,入门,RabbitMQ,Rabbit,channel,SDK
From: https://www.cnblogs.com/cyq1162/p/16602891.html

相关文章

  • Docker之RabbitMQ保姆级别安装
    Docker之RabbitMQ保姆级别安装:如果觉得样式不好:跳转即可 http://www.lifengying.site/(md文件复制过来有些样式会不一样)学英语网站项目:自己先保证Redis、Nginx、RabbitMQ......
  • RabbitMQ 入门系列:3、基础含义:持久化、排它性、自动删除、强制性、路由键。
    系列目录RabbitMQ入门系列:1、MQ的应用场景的选择与RabbitMQ安装。RabbitMQ入门系列:2、基础含义:链接、通道、队列、交换机。RabbitMQ入门系列:3、基础含义:持久化、......
  • spring 整合 rabbitmq
    一、基本配置1、pom添加以下jar<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.7.5</ve......
  • RabbitMQ 入门系列:2、基础含义理解:链接、通道、队列、交换机
    系列目录RabbitMQ入门系列:1、MQ的应用场景的选择与RabbitMQ安装。RabbitMQ入门系列:2、基础含义:链接、通道、队列、交换机。RabbitMQ入门系列:3、基础含义:持久化、......
  • RabbitMQ安装及简单使用
    1.rabbitmq启动rabbitmq路径:/usr/local/rabbitmq_server-3.7.8在rabbitmq安装目录下,进入到sbin目录,执行:#启动rabbitmqrabbitmq-server./rabbitmq-server2.rabbitmq......
  • 使用新版本Minio的SDK实现文件的上传和下载
    一、minio配置信息,为了方便,这里不写在配置文件直接用枚举importlombok.AllArgsConstructor;importlombok.Getter;/***作者:唐婉*时间:2022/8/1511:28*描述:m......
  • 单例模式
    c++的设计模式:1单例模式(SingletonPattern)单例模式:是最简单的设计模式之一。但是确实很有用的设计模式,因为很多时候,在同一个系统中,我们希望某个类在创建对象的时候,只能......
  • RabbitMQ 发布订阅版本
    publicclassR_MQHelper{///<summary>///获取Rabbitmq连接对象///</summary>///<returns></returns>publicsta......
  • RabbitMQ 入门系列:1、MQ的应用场景的选择与Rabbit安装
    1、MQ的应用场景的选择:可以参考网上的对比图: 遥想当年,MQ都是MSMQ(微软)的,现在,都不在参考图上了。对MQ的使用,根据应用场景,选择适合的MQ即可,本系列仅介绍RabbitMQ。2、......
  • 设计模式-单例模式
    单例模式:简单地说就是一个实例即一个对象,全局只用这一个对象。如何保证一个对象呐?私有的构造函数,保证外界不能直接new一个对象,那么就保证了单一性;但......