using System;
using System.Text;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
namespace RabbitMQDemo
{
// 生产者类
public class Producer
{
public static void Main(string[] args)
{
// 创建连接工厂对象
var factory = new ConnectionFactory()
{
HostName = "localhost", // 主机名
UserName = "guest", // 用户名
Password = "guest" // 密码
};
// 创建连接对象
using (var connection = factory.CreateConnection())
{
// 创建通道对象
using (var channel = connection.CreateModel())
{
// 声明一个队列
channel.QueueDeclare(
queue: "hello", // 队列名
durable: false, // 是否持久化
exclusive: false, // 是否排他
autoDelete: false, // 是否自动删除
arguments: null // 其他参数
);
// 定义要发送的消息内容
string message = "Hello World!";
var body = Encoding.UTF8.GetBytes(message);
// 发送消息到队列
channel.BasicPublish(
exchange: "", // 交换机名,空字符串表示默认交换机
routingKey: "hello", // 路由键,即队列名
basicProperties: null, // 消息属性,如持久化、优先级等
body: body // 消息体
);
Console.WriteLine(" [x] Sent {0}", message);
}
}
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
// 消费者类
public class Consumer
{
public static void Main()
{
// 创建连接工厂对象
var factory = new ConnectionFactory()
{
HostName = "localhost", // 主机名
UserName = "guest", // 用户名
Password = "guest" // 密码
};
// 创建连接对象
using (var connection = factory.CreateConnection())
{
// 创建通道对象
using (var channel = connection.CreateModel())
{
// 声明一个队列,如果队列不存在则创建,如果存在则不影响
channel.QueueDeclare(
queue: "hello", // 队列名
durable: false, // 是否持久化
exclusive: false, // 是否排他
autoDelete: false, // 是否自动删除
arguments: null // 其他参数
);
// 定义一个消费者对象,用于接收消息并处理
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
};
// 启动消费者,设置为手动应答模式(autoAck=false)
channel.BasicConsume(
queue: "hello", // 队列名
autoAck: true, // 是否自动应答,false表示手动应答,需要调用BasicAck方法确认消息已处理完成,否则会导致消息堆积或重复消费;true表示自动应答,一旦接收到消息就认为已处理完成,无需确认。
consumer: consumer); // 消费者对象
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
}
}
}
C# RabbitMQ 使用示例
最新推荐文章于 2024-05-23 15:44:37 发布