zoukankan      html  css  js  c++  java
  • .Net中简单地使用RabbitMQ消息队列

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

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

    二.使用

    1.环境准备

      下载安装Erlang和RabbitMQ,我这里是在Windows上安装的,可以参考 《在Windows上安装RabbitMQ 指南》 。

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

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

       在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就会实时获取。

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

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

     三.总结

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

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

      

  • 相关阅读:
    窗体1打开窗体2的方法
    C#中窗体间传递数据的几种方法(转载)
    只读字段和常量
    Datepicker控件
    .NET中的加密和解密
    ASP.NET网页生命周期事件
    hdu 1394 Minimum Inversion Number(逆序数对) : 树状数组 O(nlogn)
    我的第一次博客
    弹性布局
    HTML标签部分(块级/行级)
  • 原文地址:https://www.cnblogs.com/shadoll/p/14597682.html
Copyright © 2011-2022 走看看