【EasyNetQ】-|【EasyNetQ】- 简介
EasyNetQ是一个简单易用的,稳定的的RabbitMQ .NET API 。
如果您只想尽快启动并运行,请转到“ 快速开始”指南。
EasyNetQ的目标是提供一个库,使得在.NET中使用RabbitMQ尽可能简单。为了做到这一点,它必须采取一种自以为是的观点,看看你应该如何使用RabbitMQ和.NET。它通过执行一些简单的约定来简化灵活性。这些包括:
- 消息应由.NET类型表示。
- 消息应按其.NET类型进行路由。
public class MyMessage { public string Text { get; set; } }
【【EasyNetQ】-|【EasyNetQ】- 简介】EasyNetQ按类型路由消息。发布消息时,EasyNetQ会检查其类型,并根据类型名称,命名空间和程序集为其提供路由密钥。在消费方面,订阅者订阅了一种类型。订阅类型后,该类型的消息将路由到订户。
默认情况下,EasyNetQ使用Newtonsoft.Json库将.NET类型序列化为JSON。这样做的好处是消息是人类可读的,因此您可以使用RabbitMQ管理应用程序等工具来调试消息问题。
API设计
文章图片
EasyNetQ是一组组件,它们在RabbitMQ.Client库之上提供服务。它们执行序列化,错误处理,线程编组,连接管理等操作。它们由mini-IoC容器组成。您可以非常轻松地使用自己的实现替换任何组件。因此,如果您想要XML序列化而不是内置的JSON,只需编写ISerializer的实现并将其注册到容器中。
这些组件由IAdvancedBus API提供。这看起来很像AMQP规范,实际上您可以从此API运行大多数AMQP方法。此API隐藏的唯一AMQP概念是通道。这是因为通道是一个令人困惑的低级概念,它首先应该永远不会成为AMQP规范的一部分。对于这个API而言,“高级”并不是一个非常好的名称,老实说,'Iamqp'会好得多。
分层在高级API之上的是一组消息传递模式:发布/订阅,请求/响应和发送/接收。这是EasyNetQ的“自以为是”的一部分。我们应该如何实施这些模式。灵活性很小; 要么你接受我们做事的方式,要么你不使用它。目的是你,用户,不必花费精力带宽重新发明相同的模式; 每次只是想发布消息并订阅它时,您不必做出选择。它旨在实现EasyNetQ的核心目标,即尽可能简单地使用RabbitMQ。
这些模式位于IBus API的后面。再一次,这是一个糟糕的名字,它与消息总线的概念几乎没有关系。更好的名称是IPackagedMessagePatterns。
IBus旨在为80%的用户工作,80%的时间。这并非详尽无遗。如果IBus不提供您要实现的模式,则应使用IAdvancedBus。这样做没有问题,这就是EasyNetQ的设计使用方式。
我为什么需要EasyNetQ? RabbitMQ还没有.NET客户端吗?
是的,它确实。您可以在此处下载.NET AMQP客户端库。
那为什么我需要EasyNetQ?RabbitMQ .NET客户端实现了AMQP协议的客户端(RabbitMQ实现了服务器端)。AMQP旨在作为消息传递的HTTP。它旨在跨平台和语言无关。它还可以基于Exchange / Binding / Queue模型灵活地支持各种消息传递模式。
拥有这种灵活性非常棒,但灵活性带来了复杂性。这意味着您需要编写大量代码才能实现RabbitMQ客户端。通常,此代码包括:
- 实现消息传递模式,例如发布/订阅或请求/响应。虽然,公平地说,.NET客户端确实提供了一些支持。
- 实施路由策略。您将如何设计交换队列绑定,以及如何在生产者和消费者之间路由消息?
- 实现消息序列化/反序列化。如何将AMQP中消息的二进制表示转换为编程语言理解的内容?
- 为订阅实现一个消费者线程。您需要有一个专用的消费者循环来等待您订阅的消息。您将如何处理多个订户或临时订户,例如等待请求响应的订户?
- 实现用户重新连接。如果连接中断或RabbitMQ服务器退出,您如何检测它并确保重建所有订阅?
- 了解并实施服务质量设置。您需要进行哪些设置才能确保拥有可靠的客户端。
- 实施错误处理策略。如果收到格式错误的消息,或者抛出了意外的异常,您的客户应该怎么做?
- 实施发布者确认可靠的消息传递。
业绩预期 EasyNetQ的性能与RabbitMQ代理的性能直接相关。这可能因网络和服务器性能而异。在具有RabbitMQ本地实例的开发人员计算机上进行的测试中,实现了每秒约5000条2K消息的持续夜间性能。所有EasyNetQ端点的内存使用在夜间运行时都是稳定的。
转载于:https://www.cnblogs.com/wangwust/p/9437282.html
推荐阅读
- 宽容谁
- 我要做大厨
- 增长黑客的海盗法则
- 画画吗()
- 2019-02-13——今天谈梦想()
- 远去的风筝
- 三十年后的广场舞大爷
- 叙述作文
- 20190302|20190302 复盘翻盘
- 学无止境,人生还很长