用.net core写一个使用消息队列的demo
时间: 2023-11-27 07:51:01 浏览: 44
好的,下面是使用 RabbitMQ 消息队列的 .NET Core Demo:
首先,需要创建一个 .NET Core Console 应用程序。在控制台中,使用以下命令:
```
dotnet new console -o RabbitMQDemo
cd RabbitMQDemo
```
接着,需要安装 RabbitMQ 客户端库:RabbitMQ.Client。使用以下命令:
```
dotnet add package RabbitMQ.Client
```
在代码中,我们可以使用以下代码来连接到 RabbitMQ,并向队列发送消息:
```csharp
using RabbitMQ.Client;
using System;
using System.Text;
class Program
{
static void Main(string[] args)
{
var factory = new ConnectionFactory() { HostName = "localhost" };
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();
}
}
```
在上面的代码中,我们使用了 ConnectionFactory 类来创建一个连接到 RabbitMQ 的连接。然后,我们使用连接创建一个 channel,并使用 channel.QueueDeclare() 方法来声明一个名为 "hello" 的队列。
接着,我们将要发送的消息编码成字节数组,并使用 channel.BasicPublish() 方法将消息发布到队列中。
最后,我们使用 Console.ReadLine() 方法来等待用户按下回车键,以便程序可以安全地退出。
在另一个控制台中,我们可以使用以下代码来接收队列中的消息:
```csharp
using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
class Program
{
static void Main(string[] args)
{
var factory = new ConnectionFactory() { HostName = "localhost" };
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);
};
channel.BasicConsume(queue: "hello",
autoAck: true,
consumer: consumer);
Console.WriteLine(" Press [enter] to exit.");
Console.ReadLine();
}
}
}
```
在上面的代码中,我们同样使用 ConnectionFactory 创建连接和 channel。然后,我们使用 channel.QueueDeclare() 方法声明名为 "hello" 的队列。
接着,我们使用 EventingBasicConsumer 类创建一个消费者,并在 Received 事件处理程序中输出收到的消息。
最后,我们使用 channel.BasicConsume() 方法开始消费队列中的消息,并使用 Console.ReadLine() 方法等待用户按下回车键以退出程序。
这就是使用 RabbitMQ 客户端库的 .NET Core 消息队列 Demo。