RabbitMQ图解

RabbitMQ是一个消息队列软件,称为消息代理或队列管理器。简单地说, 这是一个可以定义队列的软件,应用程序可以连接到队列并将消息传输到队列中。


消息可以包括任何类型的信息。 例如,它可以具有从另一个应用程序(可能在另一个服务器上)开始的进程/任务的信息,或者它可以只是一个简单的文本消息。队列管理器软件存储消息,直到接收应用程序连接并从队列中取出消息。然后接收应用程序以适当的方式处理消息。


RabbitMQ 例子

message broker可以充当各种服务的中间人(例如,在这个例子中为web应用程序)。它们可以用来减少Web应用程序服务器的负载和交付时间,因为通常需要相当多的时间来处理的任务可以委托给只执行它们的第三方。
在本文中,我们遵循Web应用程序允许用户将信息上载到网站的场景。该网站将处理这些信息并生成PDF并将其发回给用户。处理信息,生成PDF和发送电子邮件将在这个示例中花费几秒钟,这也是为什么使用消息队列的原因之一。
当用户将用户信息输入到Web界面时,Web应用程序会将“PDF处理”任务和所有信息放入消息中,并将消息放置到RabbitMQ中定义的队列中。


消息队列的基本体系结构很简单,有一些客户端应用程序称为producer,用于创建消息并将其交付给broker(消息队列)。其他应用程序(称为consumer)连接到队列并订阅要处理的消息。软件可以是producer,consumer,也可以既是producer也是consumer。 放置在队列中的消息将被存储直到consumer检索它们。


何时以及为什么要使用RabbitMQ?

消息队列允许Web服务器快速响应请求,而不是被迫在现场执行资源繁重的过程。如果要将消息分发给多个接受者进行消费或平衡工作人员之间的负载,则消息排队也很有用。
当producer在队列中排队新消息的同时,consumer可以接收队列消息并开始处理PDF。consumer可以与发布者位于完全不同的服务器上,也可以位于同一台服务器上。 该请求可以用一种编程语言创建,并以另一种编程语言来处理 - 两个应用程序只能通过它们发送给对方的消息进行通信。因此,这两个应用程序在发送者和接收者之间具有低耦合。


1、用户向Web应用程序发送PDF创建请求。
2、Web应用程序(producer)向RabbitMQ发送消息,包括来自请求的数据,如姓名和电子邮件。
3、交换接受来自producer应用程序的消息,并将它们路由到正确的消息队列用于创建PDF。
4、PDF处理工作者(consumer)接收任务并开始处理PDF。


EXCHANGES
消息不会直接发布到队列中,而是producer将消息发送到exchange。exchange负责将消息路由到不同的队列。exchange接受来自procuder应用程序的消息,并借助bindings和路由密钥将它们路由到消息队列。
bindings是队列和交换机之间的链接。


RabbitMQ中的消息流


1、producer向exchange发布消息,当你创建exchangge时,必须指定其类型。
2、exchange收到消息,现在负责消息的路由。exchange根据交换类型考虑不同的消息属性,例如路由密钥。
3、Bindings必须从交换到队列创建。 在这种情况下,我们看到来自交换机的两个不同队列的两个Bindings。 Exchange根据消息属性将消息路由到队列中。
4、消息保留在队列中,直到由consumer处理。
5、Consumer处理消息。


EXCHANGE的类型

·Direct:直接交换基于消息路由密钥将消息传递给队列。在直接交换中,消息被路由到binding密钥与消息的路由密钥完全匹配的队列。如果队列绑定到具有绑定密钥pdfprocess的交换机,那么发布到具有路由密钥pdfprocess的交换机的消息将被路由到该队列。
·Fanout:fanout exchange将消息路由到绑定到它的所有队列。
·Topic: topic exchange在路由密钥和bidding中指定的路由模式之间进行通配符匹配。
·Headers:Headers exchanges使用消息标题属性进行路由。


参考:

https://www.cloudamqp.com/blog/2015-05-18-part1-rabbitmq-for-beginners-what-is-rabbitmq.html

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值