ToB企服应用市场:ToB评测及商务社交产业平台

标题: RabbitMQ的基本用法 [打印本页]

作者: 张国伟    时间: 2024-5-20 11:00
标题: RabbitMQ的基本用法
RabbitMQ是一个实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。它使用Erlang语言编写,并广泛用于分布式体系、微服务架构、大数据处理等领域。RabbitMQ的基本用法涉及几个核心概念,包罗消息(Message)、消息队列(Queue)、交换器(Exchange)、绑定(Binding)和网络连接(Connection)。
以下是RabbitMQ的基本用法概述:
在实际使用中,你可以根据详细的需求和场景来配置和使用RabbitMQ。例如,你可以使用RabbitMQ来实现异步任务处理、解耦体系组件、数据流转媒介和日志收集等功能。同时,RabbitMQ还提供了丰富的配置选项和插件,以满足不同场景下的需求。
在C#中,使用RabbitMQ通常涉及与RabbitMQ的AMQP协议进行交互。这通常通过RabbitMQ的官方C#客户端库RabbitMQ.Client来完成。以下是一个简单的C#示例,展示了如何作为生产者和消费者来使用RabbitMQ。
1. 安装RabbitMQ.Client

首先,你需要在你的C#项目中安装RabbitMQ的客户端库。这可以通过NuGet包管理器来完成。在Visual Studio中,右键点击你的项目 -> 选择 "Manage NuGet Packages..." -> 搜索 "RabbitMQ.Client" -> 点击 "Install"。
2. 生产者(发送消息)

一个简单的生产者示例,它连接到RabbitMQ服务器,声明一个队列,并发送一条消息。
  1. using RabbitMQ.Client;  
  2. using RabbitMQ.Client.Events;  
  3. using System;  
  4. using System.Text;  
  5.   
  6. class Producer  
  7. {  
  8.     public static void Main()  
  9.     {  
  10.         var factory = new ConnectionFactory() { HostName = "localhost" }; // 替换为你的RabbitMQ服务器地址  
  11.         using (var connection = factory.CreateConnection())  
  12.         using (var channel = connection.CreateModel())  
  13.         {  
  14.             channel.QueueDeclare(queue: "hello",  
  15.                                  durable: false,  
  16.                                  exclusive: false,  
  17.                                  autoDelete: false,  
  18.                                  arguments: null);  
  19.   
  20.             string message = "Hello World!";  
  21.             var body = Encoding.UTF8.GetBytes(message);  
  22.   
  23.             channel.BasicPublish(exchange: "",  
  24.                                  routingKey: "hello",  
  25.                                  basicProperties: null,  
  26.                                  body: body);  
  27.             Console.WriteLine(" [x] Sent '{0}'", message);  
  28.         }  
  29.   
  30.         Console.WriteLine(" Press [enter] to exit.");  
  31.         Console.ReadLine();  
  32.     }  
  33. }
复制代码
3. 消费者(吸收消息)

简单的消费者示例,它连接到RabbitMQ服务器,声明一个队列,并期待吸收消息。
  1. using RabbitMQ.Client;  
  2. using RabbitMQ.Client.Events;  
  3. using System;  
  4. using System.Text;  
  5.   
  6. class Consumer  
  7. {  
  8.     public static void Main()  
  9.     {  
  10.         var factory = new ConnectionFactory() { HostName = "localhost" }; // 替换为你的RabbitMQ服务器地址  
  11.         using (var connection = factory.CreateConnection())  
  12.         using (var channel = connection.CreateModel())  
  13.         {  
  14.             channel.QueueDeclare(queue: "hello",  
  15.                                  durable: false,  
  16.                                  exclusive: false,  
  17.                                  autoDelete: false,  
  18.                                  arguments: null);  
  19.   
  20.             var consumer = new EventingBasicConsumer(channel);  
  21.             consumer.Received += (model, ea) =>  
  22.             {  
  23.                 var body = ea.Body.ToArray();  
  24.                 var message = Encoding.UTF8.GetString(body);  
  25.                 Console.WriteLine(" [x] Received '{0}'", message);  
  26.             };  
  27.             channel.BasicConsume(queue: "hello",  
  28.                                  autoAck: true,  
  29.                                  consumer: consumer);  
  30.   
  31.             Console.WriteLine(" Press [enter] to exit.");  
  32.             Console.ReadLine();  
  33.         }  
  34.     }  
  35. }
复制代码
 
注意事项:


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4