14.rabbitmq| 青训营笔记

125 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。对于消息中间件,常见角色大致也就有 Producer(生产者)、Consumer(消费者)。

面对一些突发的流量,队列可以缓解数据库的压力。rabbitmq有很多模型,首先要选择一个合适的rabbitmq模型。

在增加/删除一条消息的时候,生产者生产消息,进入队列,消费者监听队列,有消息的时候就读出来,对数据库进行操作。

Producer: 生产者,就是投递消息的一方。 生产者创建消息,然后发布到 RabbitMQ 中。消息一般可以包含 2 个部分:消息体和标签 (Label)。消息体也可以称之为 payload ,在实际应用中,消 息体一般是一个带有业务逻辑结构 的数据,比如一个 JSON 字符串。当然可以进一步对这个消息体进行序列化操作。消息的标签用来表述这条消息 , 比如 一个交换器的名称和一个路由键 。 生产者把消息交由 RabbitMQ , RabbitMQ 之后会根据标签把消息发送给感兴趣的消费者(Consumer ) 

Consumer: 消费者 ,就是接收消息的一方。 消费者连接到 RabbitMQ 服务器,并订阅到队列上 。当消费者消费一 条消息时 , 只是消费消息的消息体(payload )。在消息路由的过程中 ,消息的标签会丢弃 ,存入到队列中的消息只有消息体,消费者也只会消费到消息体 ,也就不知道消息的生产者是谁,当然消费者也不需要知道 。 

Queue: 队列,是 RabbitMQ 的内部对象,用 于存储消息。

消息队列也会面临一些问题,比如重复消费怎么解决?进入死信队列的消息怎么解决等等。