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

生产数据

消费数据

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

相关推荐
Eternity_GQM1 小时前
【Word VBA Zotero 引用宏错误分析与改正指南】【解决[21–23]参考文献格式插入超链接问题】
开发语言·c#·word
cimeo6 小时前
【C 学习】06-算法&程序设计举例
c#
百锦再6 小时前
.NET 的 WebApi 项目必要可配置项都有哪些?
java·开发语言·c#·.net·core·net
WYH28717 小时前
C#控制台输入(Read()、ReadKey()和ReadLine())
开发语言·c#
hqwest18 小时前
C#WPF实战出真汁06--【系统设置】--餐桌类型设置
c#·.net·wpf·布局·分页·命令·viewmodel
夜影风21 小时前
RabbitMQ核心架构与应用
分布式·架构·rabbitmq
做一位快乐的码农21 小时前
基于.net、C#、asp.net、vs的保护大自然网站的设计与实现
c#·asp.net·.net
DavieLau21 小时前
C#项目WCF接口暴露调用及SOAP接口请求测试(Python版)
xml·服务器·开发语言·python·c#
张人玉21 小时前
C#Encoding
开发语言·c#
hqwest1 天前
C#WPF实战出真汁05--左侧导航
开发语言·c#·wpf·主界面·窗体设计·视图viewmodel