RabbitMQ 生产者与消费者Code
消费者:
// See https://aka.ms/new-console-template for more information
using RabbitMQ.Client;
using System.Text;
Console.WriteLine("Hello, World!");
string dir = AppDomain.CurrentDomain.BaseDirectory;
string? consumerName = Path.GetFileName(Path.GetDirectoryName(dir));
ConnectionFactory factory= new ConnectionFactory(); //创建链接工厂
factory.HostName = "192.168.8.21";
factory.UserName = "yangpeng";
factory.Password = "yangpeng";
factory.Port = 5677; //默认端口号是:5672
factory.AutomaticRecoveryEnabled = true;
using (IConnection connection = factory.CreateConnection())
{
using (IModel channel = connection.CreateModel())
{
//创建队列
channel.QueueDeclare(queue: "OnlyProducerMessageYangpeng", durable: true, exclusive: false, autoDelete: false, arguments: null);
//创建交换机
channel.ExchangeDeclare(exchange: "OnlyProducerMessageExChangeYangpeng", type: ExchangeType.Direct, durable: true, autoDelete: false, arguments: null);
//将队列和交换机绑定
channel.QueueBind(queue: "OnlyProducerMessageYangpeng", exchange: "OnlyProducerMessageExChangeYangpeng", routingKey: String.Empty, arguments: null);
Console.ForegroundColor=ConsoleColor.Red;
Console.WriteLine($"生产者{consumerName}已经准备就绪");
int i = 1;
while (i <= 1000)
{
string message = $"{consumerName}生成者发送第{i}条消息;";
byte[] body=Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "OnlyProducerMessageExChangeYangpeng", routingKey: string.Empty, basicProperties: null, body: body);
Console.WriteLine($"消息已发送{i}条");
i++;
Thread.Sleep(500);
}
}
}
生产者:
// See https://aka.ms/new-console-template for more information
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System.Text;
Console.WriteLine("Hello, World!");
string dir = AppDomain.CurrentDomain.BaseDirectory;
string? consumerName = Path.GetFileName(Path.GetDirectoryName(dir));
ConnectionFactory factory = new ConnectionFactory(); //创建链接工厂
factory.HostName = "192.168.8.21";
factory.UserName = "yangpeng";
factory.Password = "yangpeng";
factory.Port = 5677; //默认端口号是:5672
using (IConnection connection = factory.CreateConnection()) //基于链接工厂创建练级
{
using (var channel = connection.CreateModel()) //基于链接创建信道
{
Console.ForegroundColor = ConsoleColor.Green;
try
{
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body;
var message = Encoding.UTF8.GetString(body.ToArray());
Console.WriteLine($"{consumerName}成功接受到消息,消息内容为:{message}");
};
channel.BasicConsume(queue: "OnlyProducerMessageYangpeng", autoAck: true, consumer: consumer);
Console.WriteLine("Press[enter] to exit.");
Console.ReadLine();
}
catch (Exception ex) {
Console.WriteLine(ex.Message);
}
}
}

浙公网安备 33010602011771号