嗨,大家好,我是小魔童哪吒,咱们从今天开始进入开源组件的学习,一边学习一边总结一边分享 文章提纲如下:
本次文章不涉及编码,编码咱们统一放在下一次 RabbitMQ 简单介绍
AMQP 是什么?
客户端应用可以通过这个协议与消息代理和它实现的 MQ 是什么?全称 是一种跨进程、异步的通信机制 用于上下游传递消息,由消息系统来确保消息的可靠传递。 RabbitMQ 一般使用在什么场景?
RabbitMQ 组件中都包含了啥?
可以订阅某个队列
创建消息,然后发布到队列中(queue),最终将消息发送到监听的消费者
一个实体,用于标识消息队列服务器
虚拟主机 标识一批交换机、消息队列和相关对象 虚拟主机是共享相同的身份认证和加密环境的独立服务器域 每个
交换器,用来接收生产者发送的消息并将这些消息路由给服务器中的队列
消息队列,用来保存消息直到发送给消费者 它是消息的容器,也是消息的终点 一个消息可投入一个或多个队列 消息一直在队列里面,等待消费者连接到这个队列并将它取走
绑定,用于消息队列和交换机之间的关联 一个绑定就是基于路由键将交换机和消息队列连接起来的路由规则,所以可以将交换器理解成一个由绑定构成的路由表
信道,多路复用连接中的一条独立的双向数据流通道 信道是建立在真实的
网络连接,例如一个TCP连接,可以有多个
消息的生产者 也是一个向交换器发布消息的客户端应用程序
消息的消费者 表示从一个消息队列中取得消息的客户端应用程序
消息,它是由消息头和消息体组成 消息体是不透明的,而消息头则是由一系列的可选属性组成 这些属性包括如下参数
市面上都有哪些 MQ ?
那么我们为啥选择 RabbitMQ ?咱们来看看
在消息进入队列之前,通过 对于典型的路由功能, 对于复杂的路由功能,
多个 RabbitMQ 服务器可以组成一个集群,形成一个逻辑 Broker
RabbitMQ 队列可以在集群中的机器上进行镜像,使得在部分节点出问题的情况下队列仍然可用
几乎支持所有常用语言,比如
提供了易用的用户界面,使得用户可以监控和管理消息 Broker
如果消息异常,RabbitMQ 提供了消息的跟踪机制,使用者可以找出具体发生了什么
提供了许多插件,来从多方面进行扩展,也可以编辑自己的插件 RabbitMQ 的六种工作模式图片来源于 RabbitMQ 官方文档 https://www./getstarted.html simple 简单模式简单的消息生产者和简单的消费者的关系,生产者生产消息,放到队列中,消费中消费队列中的消息
消息被拿走后,自动从队列中删除 work 工作模式多个消费端消费同一个队列中的消息,队列采用轮询的方式将消息是平均发送给消费者,此处的资源是竞争关系
消费者C1,消费者C2,同时监听同一个队列 消息被消费者C1,C2共同争抢当前的消息队列内容,谁先拿到谁负责消费消息 这里就会有这样的问题,同一个消息会被不同的消费者都消费掉,我们需要处理这种问题 可以设置一个开关,
publish/subscribe 发布订阅模式publish/subscribe 发布订阅模式 , 相对于Work queues模式多了一个交换机,此处的资源是共享的 生产端先把消息发送到交换机,再由交换机把消息发送到绑定的队列中,每个绑定的队列都能收到由生产端发送的消息
routing 路由模式
大致涉及的流程如下: 生产者处理流程:
消费者处理流程:
Topics 模式实际上是路由模式的一种 他俩的最大的区别是 : Topics 模式发送消息和消费消息的时候是通过通配符去进行匹配的 通配符有如下注意点:
|
|