C#和RabbitMQ进行基本操作的简单示例

RabbitMQ是一个功能强大的消息队列中间件,它可以在应用程序之间提供可靠的异步通信。以下是使用C#和RabbitMQ进行基本操作的简单示例。

首先,您需要在项目中安装RabbitMQ.Client NuGet包。您可以通过搜索"RabbitMQ.Client"来找到并安装它。

以下是一个使用RabbitMQ的发布/订阅模式的示例:

1. 生产者(发布者)代码示例:

```csharp
using RabbitMQ.Client;
using System;
using System.Text;




class Program
{
    static void Main()
    {
        // 创建连接工厂
        var factory = new ConnectionFactory() { HostName = "localhost" };




        using (var connection = factory.CreateConnection())
        using (var channel = connection.CreateModel())
        {
            // 声明一个交换机,类型为"fanout"广播
            channel.ExchangeDeclare(exchange: "logs", type: ExchangeType.Fanout);




            while (true)
            {
                Console.WriteLine("请输入要发送的消息:");
                var message = Console.ReadLine();




                // 将消息转换为字节数组
                var body = Encoding.UTF8.GetBytes(message);




                // 发布消息到交换机,并指定routingKey为空
                channel.BasicPublish(exchange: "logs",
                                     routingKey: "",
                                     basicProperties: null,
                                     body: body);




                Console.WriteLine("消息已发送:{0}", message);
            }
        }
    }
}
```

2. 消费者(订阅者)代码示例:

```csharp
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;




class Program
{
    static void Main()
    {
        // 创建连接工厂
        var factory = new ConnectionFactory() { HostName = "localhost" };




        using (var connection = factory.CreateConnection())
        using (var channel = connection.CreateModel())
        {
            // 声明一个交换机,类型为"fanout"广播
            channel.ExchangeDeclare(exchange: "logs", type: ExchangeType.Fanout);




            // 声明一个随机生成的临时队列
            var queueName = channel.QueueDeclare().QueueName;




            // 绑定队列到交换机
            channel.QueueBind(queue: queueName,
                              exchange: "logs",
                              routingKey: "");




            Console.WriteLine("等待消息...");




            var consumer = new EventingBasicConsumer(channel);




            // 接收消息的事件处理程序
            consumer.Received += (model, ea) =>
            {
                var body = ea.Body.ToArray();
                var message = Encoding.UTF8.GetString(body);




                Console.WriteLine("收到消息:{0}", message);
            };




            // 启动消费者并开始消费队列中的消息
            channel.BasicConsume(queue: queueName,
                                 autoAck: true,
                                 consumer: consumer);




            Console.WriteLine("按任意键退出");
            Console.ReadLine();
        }
    }
}
```

在以上示例中,生产者使用`channel.BasicPublish`方法将消息发布到名为"logs"的交换机上,而消费者使用`channel.BasicConsume`方法从队列中消费消息。

这只是RabbitMQ提供的许多功能之一。您还可以使用不同的交换机类型和路由键来实现更复杂的消息路由和处理逻辑。

希望这个简单的示例能够帮助您开始使用RabbitMQ进行消息通信!

如果喜欢我的文章,那么

“在看”和转发是对我最大的支持!

-

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值