请帮我用C#写一个消息队列发送和接收的程序
以下是一个使用C#编写的简单的消息队列发送和接收程序的示例:
using System;
using System.Threading.Tasks;
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
class Program
{
static void Main()
{
Task.Run(() => ReceiveMessage()); // 启动接收消息的任务
SendMessage(); // 发送消息
}
static void SendMessage()
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "message_queue",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
string message = "Hello, RabbitMQ!";
var body = System.Text.Encoding.UTF8.GetBytes(message);
channel.BasicPublish(exchange: "",
routingKey: "message_queue",
basicProperties: null,
body: body);
Console.WriteLine("Sent message: {0}", message);
}
}
static void ReceiveMessage()
{
var factory = new ConnectionFactory() { HostName = "localhost" };
using (var connection = factory.CreateConnection())
using (var channel = connection.CreateModel())
{
channel.QueueDeclare(queue: "message_queue",
durable: false,
exclusive: false,
autoDelete: false,
arguments: null);
var consumer = new EventingBasicConsumer(channel);
consumer.Received += (model, ea) =>
{
var body = ea.Body.ToArray();
var message = System.Text.Encoding.UTF8.GetString(body);
Console.WriteLine("Received message: {0}", message);
};
channel.BasicConsume(queue: "message_queue",
autoAck: true,
consumer: consumer);
Console.WriteLine("Press [enter] to exit.");
Console.ReadLine();
}
}
}
上述代码使用RabbitMQ来实现消息队列的发送和接收。在 SendMessage 方法中,我们创建了一个连接、一个通道,并声明了一个名为 message_queue 的队列。然后,我们将消息发送到该队列中。
在 ReceiveMessage 方法中,我们同样创建了一个连接、一个通道,并声明了与发送端相同的队列。然后,我们使用 EventingBasicConsumer 类来订阅队列中的消息,并在接收到消息时进行处理。
你可以根据自己的需求进行修改和扩展
原文地址: https://www.cveoy.top/t/topic/ijMo 著作权归作者所有。请勿转载和采集!