ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

.NET Core 下使用 RabbitMQ

2020-09-16 09:02:22  阅读:359  来源: 互联网

标签:Core guest exchange RabbitMQ var using NET channel


介绍

RabbitMQ是一个开源的,基于AMQP(Advanced Message Queuing Protocol)协议的完整,可复用的企业级消息队列(Message Queue 一种应用程序与应用程序之间的一种通信方法)系统,RabbitMQ可以实现点对点,发布订阅等消息处理模式

安装

为了开发方便,我在docker中安装了RabbitMQ,RabbitMQ安装完成后,默认端口打开地址为:http://localhost:15672,输入默认账号密码,guest/guest,可以看到RabbitMQ UI界面。

快速开始

接下来我们用RabbitMQ来完成一个比较常见的生产者和消费者模式的代码,新建两个控制台项目,RabbitMQConsumerRabbitMQProducer

分别在两个项目中安装组件

Install-Package RabbitMQ.Client

RabbitMQProducer生产者项目中,添加以下代码。

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

namespace RabbitMQProducer
{
    class Program
    {
        static void Main(string[] args)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "localhost",
                Port = 5672,
                UserName = "guest",
                Password = "guest"
            };

            using var connection = factory.CreateConnection();
            using var channel = connection.CreateModel();

            var exchange = "msg_test";

            channel.ExchangeDeclare(exchange, type: ExchangeType.Fanout);

            for (int i = 0; i < 10000; i++)
            {
                var message = $"hello,我是生产者【{i + 1}】号";
                var body = Encoding.UTF8.GetBytes(message);

                channel.BasicPublish(exchange, routingKey: "", basicProperties: null, body: body);

                Console.WriteLine($"- 发送消息:{message}");
            }
        }
    }
}

模拟发出10000次消息,接下来在RabbitMQConsumer消费者项目中接收消息,代码如下:

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

namespace RabbitMQConsumer
{
    class Program
    {
        static void Main(string[] args)
        {
            var factory = new ConnectionFactory()
            {
                HostName = "localhost",
                Port = 5672,
                UserName = "guest",
                Password = "guest"
            };

            using var connection = factory.CreateConnection();
            using var channel = connection.CreateModel();

            var exchange = "msg_test";

            channel.ExchangeDeclare(exchange, type: ExchangeType.Fanout);

            var queueName = channel.QueueDeclare().QueueName;
            channel.QueueBind(queue: queueName, exchange, routingKey: "");

            Console.WriteLine("开始监听消息...");
            while (true)
            {
                var consumer = new EventingBasicConsumer(channel);

                consumer.Received += (model, ea) =>
                {
                    byte[] body = ea.Body.ToArray();
                    var message = Encoding.UTF8.GetString(body);

                    Console.WriteLine($"- 接收到消息:{message}");
                };

                channel.BasicConsume(queue: queueName, autoAck: true, consumer: consumer);
            }
        }
    }
}

同时启动两个看看效果。

一闪而过,速度还是挺快的,更多操作可以查看官方教程:https://www.rabbitmq.com/getstarted.html

标签:Core,guest,exchange,RabbitMQ,var,using,NET,channel
来源: https://www.cnblogs.com/meowv/p/13614474.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有