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

生产数据

消费数据

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

相关推荐
z落落5 小时前
C#WinForm 窗体切换与窗体传值(登录跳转案例)+WinForm 窗体传值(从上往下传、从下往上传)
开发语言·windows·c#
ytttr8739 小时前
C# 定时数据库备份工具
开发语言·数据库·c#
齐穗穗9 小时前
Windows下安装rabbitmq
rabbitmq
雪豹阿伟10 小时前
21.Winfrom —— 定时器、日期选择器、进度条、表格、DataTable
c#·上位机·winfrom
z落落10 小时前
C#WinForm控件实战:Panel与单选框动态创建
开发语言·c#
qq_4221525712 小时前
Word 文件太大怎么压缩?2026 年文档瘦身方案对比
开发语言·c#·word
影寂ldy14 小时前
C# 事件完整学习笔记(发布订阅 + 自定义事件 + 内置 EventHandler)
笔记·学习·c#
kyle~16 小时前
DDS分布式实时系统---自省机制
开发语言·分布式·机器人·c#·接口·ros2
Java面试题总结16 小时前
MarkItDown 再次登顶GitHub榜
开发语言·c#·github
码农飞哥16 小时前
RocketMQ消费接口设计实战:为什么HTTP回调接口必须吞掉所有异常,始终返回成功?
网络协议·http·中间件·消息队列·rocketmq