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

举报
愚公搬代码 发表于 2021/12/05 12:49:53 2021/12/05
【摘要】 一、EasyNetQ是什么?RabiitMQ Client 非常地灵活,但是伴随着灵活性而来是复杂性。这意味着你为了需要写大量代码,以便执行RabbitMQ client。通常,这些代码包括一下这些:实现消息传递模式,例如Publish/Subscribe或Request/Response。尽管,公平来讲,这个 .NET client也提供了一些这样的支持。实现路由策略。你将需要设计你如何...

一、EasyNetQ是什么?

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

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

二、使用步骤

1.定义公共消息类

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

2.发布/订阅

// 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.消息通信

同时启动两者控制台代码

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。