概述
RabbitMQ 是基于 AMQP 实现的一个开源音讯组件,次要用于在分布式系统中存储转发音讯,由因高性能、高可用以及高扩大而出名的 Erlang 语言写成。
特点
高牢靠:RabbitMQ 提供了多种多样的个性让你在可靠性和性能之间做出衡量,包含长久化、发送应答、公布确认以及高可用性。
高可用队列:反对跨机器集群,反对队列平安镜像备份,音讯的生产者与消费者不管哪一方呈现问题,均不会影响音讯的失常收回与接管。
灵便的路由:所有的音讯都会通过路由器转发到各个音讯队列中,RabbitMQ 内建了几个罕用的路由器,并且能够通过路由器的组合以及自定义路由器插件来实现简单的路由性能。
工作原理
音讯从发送端到接收端的流转过程即 RabbitMQ 的音讯工作机制,请见下图:
根本用法
共有 6 种根本用法:单对单、单对多、公布订阅模式、按路由规定发送接管、主题、RPC(即近程存储调用)。咱们将介绍单对单、单对多和主题的用法。
1、单对单:单发送、单接管
2、单对多:一个发送端,多个接收端,如分布式的工作派发
3、主题:Exchange Type 为 topic,发送音讯时须要指定交换机及 Routing Key,消费者的音讯队列绑定到该交换机并匹配到 Routing Key 实现音讯的订阅,订阅后则可接管音讯。只有消费者将队列绑定到该交换机且指定的 Routing Key 合乎匹配规定,能力收到音讯。
其中 Routing Key 能够设置成通配符,如: 或 #( 示意匹配 Routing Key 中的某个单词,# 示意任意的 Routing Key 的音讯都能被收到)。如果 Routing Key 由多个单词组成,则单词之间用. 来分隔。
命名标准:
交换机名的命名倡议:Ex{AppID}.{自定义 ExchangeName},队列名的命名倡议:MQ{AppID}.{自定义 QueueName}。
好用的轮子
其中 EasyNetQ 是.NET 上 RabbitMQ 的当先客户端 API,在 NuGet.org 上有超过 400 万次下载。这是一个凋谢源代码我的项目。
EasyNetQ 是为了提供一个尽可能简洁的实用与 RabbitMQ 的.NET 类库。为了实现这些指标,EasyNetQ 提供一种自认为你会在.NET 下应用 RabbitMQ 的视图。为了放弃应用灵活性,简略起见,EasyNetQ 强制应用了一些简略的约定。包含如下:
- 音讯用 .NET 类型示意
- 音讯通过.NET 类型路由
开源地址
更多功能见:
https://github.com/EasyNetQ/E…