C# 操作Rabbitmq

下载安装rabbitmq

参考

安装依赖包

下面的生产者和消费者都需要安装

RabbitMQ.Client 7.0.0

创建生产者

cs 复制代码
using RabbitMQ.Client;
using System.Threading.Channels;

namespace RabbitMQStu01_Product
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("RabbitMQ生产者");
            // 1、建立RabbitMQ连接
            ConnectionFactory connectionFactory = new ConnectionFactory();
            connectionFactory.HostName = "127.0.0.1";
            connectionFactory.Port = 5672;
            connectionFactory.UserName = "guest";
            connectionFactory.Password = "guest";
            connectionFactory.VirtualHost = "/";
            IConnection connection = connectionFactory.CreateConnectionAsync().Result;

            // 2、创建连接通道
            var channel = connection.CreateChannelAsync().Result;
            //发送商品数据。
            var queueName = "test20241111";
            // 3、发送商品数据
            // 3.1、创建队列
            var queueDeclareOk = channel.QueueDeclareAsync(queueName, false, false, false).Result;
            if (queueDeclareOk == null)
            {
                Console.WriteLine("创建队列成功");
                return;
            }
            // 3.2、发送数据
            byte[] messageBodyBytes = System.Text.Encoding.UTF8.GetBytes("Hello, world!");
            var props = new BasicProperties();
            props.ContentType = "text/plain";
            props.DeliveryMode = DeliveryModes.Persistent;
            channel.BasicPublishAsync("", queueName,
                mandatory: true, basicProperties: props, body: messageBodyBytes);
            Console.WriteLine("发送成功");
            Console.ReadKey();
        }
    }
}

创建消费者

cs 复制代码
using RabbitMQ.Client;
using System.Text;

namespace RabbitMQStu01_Consumer
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("RabbitMQ消费者");
            // 1、建立RabbitMQ连接
            ConnectionFactory connectionFactory = new ConnectionFactory();
            connectionFactory.HostName = "127.0.0.1";
            connectionFactory.Port = 5672;
            connectionFactory.UserName = "guest";
            connectionFactory.Password = "guest";
            connectionFactory.VirtualHost = "/";
            IConnection connection = connectionFactory.CreateConnectionAsync().Result;

            // 2、创建连接通道
            var channel = connection.CreateChannelAsync().Result;
            var queueName = "test20241111";
            // 3、消费商品
            // 3.1、实现IBasicConsumer
            var basicConsumer = new RabbitMQ.Client.Events.AsyncEventingBasicConsumer(channel);
            // 3.2、接受商品数据
            basicConsumer.ReceivedAsync += async (mode, data) => {
                // 3.3、消费商品
                var productByte = data.Body;
                string productString = Encoding.UTF8.GetString(productByte.ToArray());
                Console.WriteLine("消费了一条消息:"+ productString);
            };

            channel.BasicConsumeAsync(queueName,
                                true,
                                "",
                                 false,
                                 false,
                                 new Dictionary<string, object>(),
                                 basicConsumer).Wait();
            Console.ReadKey();
        }
    }
}

生产数据

消费数据

注意:消费者监听之后可以一直消费,生产者需要一件一件的生产

相关推荐
mudtools1 天前
.NET驾驭Word之力:玩转文本与格式
c#·.net
唐青枫1 天前
C#.NET 数据库开发提速秘籍:SqlSugar 实战详解
c#·.net
TF男孩1 天前
ARQ:一款低成本的消息队列,实现每秒万级吞吐
后端·python·消息队列
mudtools2 天前
.NET驾驭Word之力:理解Word对象模型核心 (Application, Document, Range)
c#·.net
往事随风去2 天前
架构师必备思维:从“任务队列”到“事件广播”,彻底吃透消息队列两大设计模式
消息队列·rabbitmq
大飞pkz2 天前
【设计模式】C#反射实现抽象工厂模式
设计模式·c#·抽象工厂模式·c#反射·c#反射实现抽象工厂模式
唐青枫2 天前
从入门到进阶:C#.NET Stopwatch 计时与性能测量全攻略
c#·.net
未来之窗软件服务2 天前
幽冥大陆(二)RDIFSDK 接口文档:布草洗涤厂高效运营的技术桥梁C#—东方仙盟
开发语言·c#·rdif·仙盟创梦ide·东方仙盟
1uther2 天前
Unity核心概念⑨:Screen
开发语言·游戏·unity·c#·游戏引擎
阿幸软件杂货间3 天前
Office转PDF转换器v1.0.py
开发语言·pdf·c#