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

yizhihongxing

以下是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日

相关文章

  • RabbitMQ交换机使用场景和消息可靠性总结分析

    RabbitMQ交换机使用场景和消息可靠性总结分析 RabbitMQ 是一个开源的消息队列系统,支持多种消息传递协议。在实际应用中,我们需要考虑如何使用 RabbitMQ 的交换机来实现不同的消息传递场景,并保证消息的可靠性。本文将详细讲解 RabbitMQ 交换机的使用场景和消息可靠性的总结分析,并提供两个示例说明。 RabbitMQ 交换机的使用场景 R…

    RabbitMQ 2023年5月15日
    00
  • 如何进行RabbitMQ的性能优化?

    RabbitMQ是一个高性能、可靠的消息队列系统,但是在高负载情况下,仍然可能出现性能问题。为了优化RabbitMQ的性能,我们可以采取以下措施: 配置RabbitMQ的内存限制 RabbitMQ使用内存来存储消息和元数据。如果RabbitMQ使用的内存超过了可用内存的限制,就会导致性能下降。为了避免这种情况,我们可以配置RabbitMQ的内存限制。以下是如…

    云计算 2023年5月5日
    00
  • Java 高并发编程之最实用的任务执行架构设计建议收藏

    以下是Java高并发编程之最实用的任务执行架构设计建议收藏的完整攻略,包含两个示例。 简介 在高并发场景下,任务执行架构的设计对系统的性能和可靠性有着至关重要的影响。本攻略将介绍Java高并发编程中最实用的任务执行架构设计建议,并提供两个示例。 任务执行架构设计建议 Java高并发编程中最实用的任务执行架构设计建议包括以下几点: 使用线程池 线程池是一种重用…

    RabbitMQ 2023年5月15日
    00
  • kafka 启动报错 missingTopicsFatal is true的解决

    以下是“kafka 启动报错 missingTopicsFatal is true的解决”的完整攻略,包含两个示例。 简介 在本攻略中,我们将介绍如何解决kafka启动时报错missingTopicsFatal is true的问题。通过本攻略的学习,您将了解如何在kafka配置文件中设置missingTopicsFatal参数,以及如何使用kafka-to…

    RabbitMQ 2023年5月15日
    00
  • Spring boot Rabbitmq消息防丢失实践

    以下是Spring Boot RabbitMQ消息防丢失实践的完整攻略,包含两个示例说明。 示例1:使用消息确认机制 步骤1:添加依赖 在Spring Boot中,您需要使用以下依赖: <dependency> <groupId>org.springframework.amqp</groupId> <artifact…

    RabbitMQ 2023年5月15日
    00
  • Spring Cloud之服务监控turbine的示例

    以下是Spring Cloud之服务监控Turbine的示例的完整攻略,包含两个示例。 简介 Turbine是Spring Cloud提供的一个服务监控工具,它可以将多个服务的Hystrix数据聚合在一起,方便我们进行统一的监控和管理。本攻略将详细讲解如何使用Turbine实现服务监控,并提供两个示例。 示例一:使用Turbine监控单个服务 以下是使用Tu…

    RabbitMQ 2023年5月15日
    00
  • 详解Node.js amqplib 连接 Rabbit MQ最佳实践

    以下是“详解Node.js amqplib 连接 Rabbit MQ最佳实践”的完整攻略,包含两条示例说明。 示例1:使用amqplib连接RabbitMQ 步骤1:安装amqplib 使用npm安装amqplib: npm install amqplib 步骤2:连接RabbitMQ const amqp = require(‘amqplib’); asy…

    RabbitMQ 2023年5月15日
    00
  • PHP之CI框架学习讲解

    以下是“PHP之CI框架学习讲解”的完整攻略,包含两个示例。 简介 在本攻略中,我们将介绍如何使用PHP的CI框架进行Web开发。通过攻略的学习,您将了解CI框架的基本概念、使用方法和实际应用。 示例一:创建一个简单的Web应用 以下是创建一个简单的Web应用的示例: 安装CI框架 在命令行中运行以下命令,安装CI框架: composer create-pr…

    RabbitMQ 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部