c# rabbitmq 简单收发消息的示例代码

以下是C# RabbitMQ简单收发消息的示例代码的完整攻略,包含两个示例说明。

示例1:简单队列模式

步骤1:安装RabbitMQ

首先,您需要安装RabbitMQ。您可以从RabbitMQ官网下载适合您操作系统的安装包进行安装。

步骤2:添加依赖

在Visual Studio中,您需要使用NuGet包管理器添加以下依赖:

  • RabbitMQ.Client

步骤3:发送消息

using RabbitMQ.Client;
using System;
using System.Text;

class Producer
{
    static void Main(string[] args)
    {
        var factory = new ConnectionFactory() { HostName = "localhost" };
        using (var connection = factory.CreateConnection())
        using (var channel = connection.CreateModel())
        {
            channel.QueueDeclare(queue: "my_queue", durable: false, exclusive: false, autoDelete: false, arguments: null);
            string message = "Hello World!";
            var body = Encoding.UTF8.GetBytes(message);
            channel.BasicPublish(exchange: "", routingKey: "my_queue", basicProperties: null, body: body);
            Console.WriteLine("Message sent: {0}", message);
        }
    }
}

步骤4:接收消息

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;

class Consumer
{
    static void Main(string[] args)
    {
        var factory = new ConnectionFactory() { HostName = "localhost" };
        using (var connection = factory.CreateConnection())
        using (var channel = connection.CreateModel())
        {
            channel.QueueDeclare(queue: "my_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 = Encoding.UTF8.GetString(body);
                Console.WriteLine("Message received: {0}", message);
            };
            channel.BasicConsume(queue: "my_queue", autoAck: true, consumer: consumer);
            Console.WriteLine("Waiting for messages...");
            Console.ReadLine();
        }
    }
}

步骤5:运行程序

运行发送消息的程序后,您将看到以下输出:

Message sent: Hello World!

运行接收消息的程序后,您将看到以下输出:

Waiting for messages...
Message received: Hello World!

示例2:工作队列模式

步骤1:安装RabbitMQ

同示例1。

步骤2:添加依赖

同示例1。

步骤3:发送消息

using RabbitMQ.Client;
using System;
using System.Text;

class Producer
{
    static void Main(string[] args)
    {
        var factory = new ConnectionFactory() { HostName = "localhost" };
        using (var connection = factory.CreateConnection())
        using (var channel = connection.CreateModel())
        {
            channel.QueueDeclare(queue: "my_queue", durable: false, exclusive: false, autoDelete: false, arguments: null);
            for (int i = 1; i <= 10; i++)
            {
                string message = "Message " + i;
                var body = Encoding.UTF8.GetBytes(message);
                channel.BasicPublish(exchange: "", routingKey: "my_queue", basicProperties: null, body: body);
                Console.WriteLine("Message sent: {0}", message);
            }
        }
    }
}

步骤4:接收消息

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;
using System.Threading;

class Consumer
{
    static void Main(string[] args)
    {
        var factory = new ConnectionFactory() { HostName = "localhost" };
        using (var connection = factory.CreateConnection())
        using (var channel = connection.CreateModel())
        {
            channel.QueueDeclare(queue: "my_queue", durable: false, exclusive: false, autoDelete: false, arguments: null);
            channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false);
            var consumer = new EventingBasicConsumer(channel);
            consumer.Received += (model, ea) =>
            {
                var body = ea.Body.ToArray();
                var message = Encoding.UTF8.GetString(body);
                Console.WriteLine("Message received: {0}", message);
                Thread.Sleep(5000);
                Console.WriteLine("Message processed");
                channel.BasicAck(deliveryTag: ea.DeliveryTag, multiple: false);
            };
            channel.BasicConsume(queue: "my_queue", autoAck: false, consumer: consumer);
            Console.WriteLine("Waiting for messages...");
            Console.ReadLine();
        }
    }
}

步骤5:运行程序

运行发送消息的程序后,您将看到以下输出:

Message sent: Message 1
Message sent: Message 2
Message sent: Message 3
Message sent: Message 4
Message sent: Message 5
Message sent: Message 6
Message sent: Message 7
Message sent: Message 8
Message sent: Message 9
Message sent: Message 10

运行接收消息的程序后,您将看到以下输出:

Waiting for messages...
Message received: Message 1
Message processed
Message received: Message 2
Message processed
Message received: Message 3
Message processed
Message received: Message 4
Message processed
Message received: Message 5
Message processed
Message received: Message 6
Message processed
Message received: Message 7
Message processed
Message received: Message 8
Message processed
Message received: Message 9
Message processed
Message received: Message 10
Message processed

以上就是C# RabbitMQ简单收发消息的示例代码的完整攻略,包含两个示例说明。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c# rabbitmq 简单收发消息的示例代码 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • mybatis拦截器无法注入spring bean的问题解决

    以下是“mybatis拦截器无法注入spring bean的问题解决”的完整攻略,包含两个示例。 简介 MyBatis是一种流行的Java持久化框架,可以用于快速开发数据库访问层。在使用MyBatis时,有时需要使用拦截器来扩展其功能。然而,有时会遇到拦截器无法注入Spring Bean的问题。本攻略将介绍如何解决这个问题。 示例1:使用@Intercept…

    RabbitMQ 2023年5月15日
    00
  • springboot整合netty框架实现站内信

    以下是“Spring Boot整合Netty框架实现站内信”的完整攻略,包含两个示例。 简介 Netty是一个高性能的网络通信框架,它可以用于构建各种类型的网络应用程序。本攻略将介绍如何使用Spring Boot整合Netty框架实现站内信,并提供两个示例。 Spring Boot整合Netty框架实现站内信 使用Spring Boot整合Netty框架实现…

    RabbitMQ 2023年5月15日
    00
  • Redis 使用 List 实现消息队列的优缺点

    以下是“Redis 使用 List 实现消息队列的优缺点”的完整攻略,包含两个示例。 简介 Redis 使用 List 实现消息队列是一种常见的消息传递机制,可以帮助我们实现分布式系统中的消息传递和处理。本攻略将介绍如何使用 Redis List 实现消息队列,并分析其优缺点。 Redis 使用 List 实现消息队列的优缺点 使用 Redis List 实…

    RabbitMQ 2023年5月15日
    00
  • SpringBoot集成Flyway进行数据库版本迁移管理的步骤

    以下是“SpringBoot集成Flyway进行数据库版本迁移管理的步骤”的完整攻略,包含两个示例说明。 简介 Flyway是一个开源的数据库版本迁移管理工具,可以帮助开发人员在不同的环境中管理数据库版本。SpringBoot是一个快速开发框架,可以帮助开发人员快速构建应用程序。本教程将介绍如何在SpringBoot应用程序中集成Flyway进行数据库版本迁…

    RabbitMQ 2023年5月15日
    00
  • SpringBoot利用redis集成消息队列的方法

    以下是“Spring Boot利用Redis集成消息队列的方法”的完整攻略,包含两个示例。 简介 消息队列是一种常见的应用场景,它可以用于解耦和异步处理。本攻略将介绍如何使用Spring Boot和Redis实现一个简单的消息队列,并提供两个示例。 Spring Boot利用Redis集成消息队列的方法 使用Spring Boot和Redis实现消息队列的过…

    RabbitMQ 2023年5月15日
    00
  • Java RabbitMQ的持久化和发布确认详解

    Java RabbitMQ的持久化和发布确认详解 在本文中,我们将详细讲解Java RabbitMQ的持久化和发布确认。我们将介绍RabbitMQ的基本概念和使用方法,并提供两个示例说明。 RabbitMQ基本概念 在使用RabbitMQ之前,需要了解一些基本概念: 生产者(Producer):发送消息的应用程序。 消费者(Consumer):接收消息的应用…

    RabbitMQ 2023年5月15日
    00
  • spring 使用RabbitMQ进行消息传递的示例代码

    以下是Spring使用RabbitMQ进行消息传递的完整攻略,包含两个示例说明。 示例1:简单队列模式 步骤1:添加依赖 在pom.xml文件中添加以下依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-…

    RabbitMQ 2023年5月15日
    00
  • RabbitMQ如何删除队列?

    RabbitMQ是一个开源的消息代理,它提供了可靠的消息传递机制。在RabbitMQ中,队列是存储消息的地方,它接收自产者的消息并将其保存在队列中,直到消费者准备好接收它们。以下是RabbitMQ删除队列的步骤: 创建连接 在删除队列之前,需要创建到RabbitMQ代理的连接。连接可以使用RabbitMQ提供的客户端库来创建。以下是一个使用Python客户端…

    云计算 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部