【愚公系列】2021年12月 RabbitMQ EasyNetQ的用法(window11+vs2022+.NET 6)

2022-12-01 09:20:21 浏览数 (1)

文章目录

  • 一、EasyNetQ是什么?
  • 二、使用步骤
    • 1.定义公共消息类
    • 2.发布/订阅
    • 4.消息通信

一、EasyNetQ是什么?

RabiitMQ Client 非常地灵活,但是伴随着灵活性而来是复杂性。这意味着你为了需要写大量代码,以便执行RabbitMQ client。通常,这些代码包括一下这些:

实现消息传递模式,例如Publish/Subscribe或Request/Response。尽管,公平来讲,这个 .NET client也提供了一些这样的支持。 实现路由策略。你将需要设计你如何去 exchange-queue 绑定。并且你将设计怎样在生产者和消费者之间进行消息路由。 实现消息的序列化/反序列化。 你将如何转换AMQP的二进制消息为你编程语言能理解的格式? 为订阅去实现一个消费者线程。你将需要有一个专门的消费者循环等待你订阅的消息。你会如何处理多个订阅者,或者瞬间订阅者,像哪些等待答复的请求。 实现消费者重新连接。假如连接崩溃了或者RabbitMQ 服务挂了,你怎样能检测到并确保你所有的订阅都能被重建? 懂得和实施服务质量设置。你需要什么样的设置来确保一个可靠的客户端。 实现一个错误处理策略。假如接受到一个错误的消息,或者发生一个未处理异常被抛出,你的客户端应该做什么呢? 实现发布者可靠的消息确认。 EasyNetQ目标是在AMQP之上封装所有这些关注点在一个简单好用的类库中。

二、使用步骤

1.定义公共消息类

代码语言:javascript复制
public class TextMessage
{
    public string Text { get; set; } 
}

2.发布/订阅

代码语言:javascript复制
// See https://aka.ms/new-console-template for more information
using EasyNetQ;
using RabbitMQTest;

using (var bus = RabbitHutch.CreateBus("host=localhost"))
{
    //订阅
    bus.PubSub.Subscribe<TextMessage>("test", HandleTextMessage);
    var input = "";
    Console.WriteLine("Enter a message. 'Quit' to quit.");
    //发布
    while ((input = Console.ReadLine()) != "Quit")
    {
        bus.PubSub.Publish<TextMessage>(new TextMessage
        {
            Text = input
        });
    }
}
static void HandleTextMessage(TextMessage textMessage)
{
    Console.ForegroundColor = ConsoleColor.Red;
    Console.WriteLine("Got message: {0}", textMessage.Text);
    Console.ResetColor();
}

4.消息通信

同时启动两者控制台代码

0 人点赞