消息队列的一些概念

用过哪些消息队列组件、消息队列有哪些基本概念、消息队列的作用、你使用消息队列使用场景、什么是AMQP、怎么保证消息的可靠性

用过哪些消息队列组件:

用过rabbitmq

基本概念:

producer:消息生产者

consumer:消息消费者

channel:信道,基于connection创建

exchange(交换机):交换机接收消息,根据路由键转发消息到绑定的队列

Broker:消息队列服务器实体

message消息:每个消息都有一个路由键属性

Connection:程序和broker的链接

binding绑定:一个绑定就是基于路由键将交换机和队列链接起来的路由规则,所以交换机就是一个由绑定构成的路由表。

queue队列:消息的容器,是rabbitmq内部,用于存储消息;消费者通过订阅队列来获取消息,生产者通过交换机最终把消息投递到队列。消费者可以从 Queue 中获取消息并消费;多个消费者可以订阅同一个 Queue,这时 Queue 中的消息会被平均分摊给多个消费者进行处理,而不是每个消费者都收到所有的消息并处理。

routing key 路由键:消息发送给交换机时,消息拥有一个路由键,交换机根据路由键发送到匹配的队列

binding key 绑定键:

交换机的三种常用类型:

Direct:完全匹配

Topic:模式匹配。根据通配符规则。*匹配一个单词,#匹配0个或者多个单词,路径之间用.隔开

Fanout:忽略匹配 把所有发送到该 Exchange 的消息路由到所有与它绑定 的Queue 中。

消息队列的作用

业务之间的解耦和代码的解耦

异步处理:消息发出去,有订阅方处理,不影响当前流程的速度和逻辑

限流削峰:例如秒杀等活动,把集中的流量摊平

使用的场景:

例如用户下单,发个消息出去,消息的参数有订单id,使用的优惠券id

等信息。如果使用了优惠券就可以通过消息修改用户的优惠券状态,改为已使用,以及其他操作。

再例如:。。。

什么是AMQP:

AMQP(Advanced Message Queuing Protocol,高级消息队列协议)是一个进程间传递异步消息的网络协议。

工作过程

发布者(Publisher)发布消息(Message),经由交换机(Exchange)。

交换机根据路由规则将收到的消息分发给与该交换机绑定的队列(Queue)。

最后 AMQP 代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取。

交换机类型:Direct、Fanout、Topic、Header

原文地址:https://www.cnblogs.com/dayang12525/p/13598018.html