.Net中简单地使用RabbitMQ消息队列

一.简介消息队列(Message Queue),指的是消息传递之间的容器,通常使用场景是,不需要立刻得到结果,但有需要对并发量进行控制的时候。

有很多组件可以实现消息队列,这里使用RabbitMQ。本文是为了简单记录一下.Net (Core)中如何通过 EasyNetQ 去使用RabbitMQ

二.使用

1.环境准备

下载安装 Erlang 和RabbitMQ,我这里是在 Windows 上安装的。

准备两个控制台应用(Publisher 和 Subscriber)和一个类库(Messages)。

.Net 中简单地使用 RabbitMQ 消息队列

通过 Nuget,给 Publisher 和 Subscriber 项目安装 EasyNetQ。

.Net 中简单地使用 RabbitMQ 消息队列

在 Messages 类库中,添加一个类。


public class TextMessage
{
    public string Text { get; set; }
}

 

2.Publisher 项目


class Program
{
    public static void Main(string[] args)
    {
        var connStr = "host=127.0.0.1;virtualHost=EDCVHOST;username=admin;password=123456";

        using (var bus = RabbitHutch.CreateBus(connStr))
        {
            var input = "";
            Console.WriteLine("Please enter a message. 'Quit' to quit.");
            while ((input = Console.ReadLine()) != "Quit")
            {
                bus.PubSub.Publish(new TextMessage { Text = input });
            }
        }
    }
}

 

通过 EasyNetQ 去连接RabbitMQ,然后使用它创建的 IBus 实例来发布消息。这里的通过用户在控制台输入字符串来发送消息。

3.Subscriber 项目


class Program
{
    public static void Main(string[] args)
    {
        var connStr = "host=127.0.0.1;virtualHost=EDCVHOST;username=admin;password=123456";

        using (var bus = RabbitHutch.CreateBus(connStr))
        {
            bus.PubSub.Subscribe<TextMessage>("my_test_subscriptionid", HandleTextMessage);

            Console.WriteLine("Listening for messages. Hit <return> to quit.");
            Console.ReadLine();
        }
    }

    public static void HandleTextMessage(TextMessage textMessage)
    {
        Console.ForegroundColor = ConsoleColor.Red;
        Console.WriteLine("Got message: {0}", textMessage.Text);
        Console.ResetColor();
    }
}

 

这里是订阅消息,只要程序在运行中,就会一直处于监听状态。只要发布者发布了指定类型的消息,这里就可以实时获取到,然后打印出来。

4.测试

运行两个控制台应用。在 Publisher 中输入字符,Subscriber 就会实时获取。

.Net 中简单地使用 RabbitMQ 消息队列

进入到RabbitMQ界面查看,在 connections 中可以看到目前两个客户端都在运行中(running)。

.Net 中简单地使用 RabbitMQ 消息队列

在 Queues 中,看到目前注册的队列只有一个。

.Net 中简单地使用 RabbitMQ 消息队列

三.总结

1.在.Net 中可以使用 EasyNetQ 插件来使用RabbitMQ

2.本文的例子涉及到了消息队列的订阅发布模式。

https://www.cnblogs.com/shadoll/p/14597682.html

© 版权声明

☆ END ☆
喜欢就点个赞吧
点赞0 分享
图片正在生成中,请稍后...