![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
十八、RabbitMQ
RabbitMQ
还能在学一小时
这个作者很懒,什么都没留下…
展开
-
什么是 RabbitMQ?有什么显著的特点?
RabbitMQ 是一个开源的消息中间件,使用 Erlang 语言开发。这种语言天生非常适合分布式场景,RabbitMQ 也就非常适用于在分布式应用程序之间传递消息。总之,RabbitMQ 是一个功能丰富、高度可扩展且灵活的消息中间件,适用于各种分布式应用程序和消息通信需求。它的强大功能和广泛的社区支持使其成为一个流行的消息中间件解决方案。原创 2024-02-02 09:15:29 · 387 阅读 · 0 评论 -
RabbitMQ 和 AMQP 是什么关系?
总之,AMQP 本质上是一个开放的标准,他不光可以被 RabbitMQ 实现,也可以被其他产品实现。通过这种标准的协议,实际上是可以在不同的消息中间件系统之间进行灵活的消息传递。只不过,目前具体实现这种标准的产品目前并不多,RabbitMQ 则是最有影响力的一个产品。SpringBoot 框架默认提供的 AMQP 协议支持底层也是基于 RabbitMQ 产品实现的。RabbitMQ 和 AMQP 有着非常密切的关系,但是他们是属于完全不同的两个概念。原创 2024-02-02 09:29:50 · 409 阅读 · 0 评论 -
RabbitMQ 的核心组件有哪些?
此外,生产者和消费者也是RabbitMQ的核心组件,生产者负责发送消息到Exchange或者 Queue,消费者负责从Queue中订阅和处理消息。这些核心组件共同构建了 RabbitMQ 的消息传递系统,他们协同工作才能实现消息的可靠传递、路由和业务处理等功能。原创 2024-02-02 09:42:12 · 664 阅读 · 0 评论 -
RabbitMQ架构设计
RabbitMQ 的架构设计允许多个生产者、多个消费者之间通过消息队列进行松耦合的通信,提高了系统的可伸缩性和可维护性。每个连接可以包含多个信道(Channel),每个信道是一个独立的会话通道,可以进行独立的消息传递。队列是消息的存储区,用于存储生产者发送的消息。交换机是消息的分发中心,负责将接收到的消息路由到一个或多个队列。虚拟主机是 RabbitMQ 的基本工作单元,每个虚拟主机拥有自己独立的用户、权限、交换机、队列等资源,完全隔离于其他虚拟主机。消费者是消息的接收方,负责从队列中获取消息并进行处理。原创 2024-02-02 09:53:25 · 437 阅读 · 0 评论 -
RabbitMQ 如何构建集群?
RabbitMQ 支持两种主要类型的集群:普通集群(Classic Cluster)和镜像集群(Mirrored Cluster)。总的来说,普通集群适用于对性能要求高,但可以接受数据丢失的情况。而镜像集群则适用于对数据持久性和可用性有更高要求,并愿意付出一些性能代价的场景。原创 2024-02-02 10:32:21 · 316 阅读 · 0 评论 -
RabbitMQ 中有哪几种交换机类型?
这种交换机根据消息的标头信息(Headers)来决定消息的路由,而不是使用路由键。队列和交换机之间的绑定规则是根据标头键值对来定义的,只有当消息的标头与绑定规则完全匹配时,消息才会被路由到队列。当消息发布到默认交换机时,路由键会被解释为队列的名称,消息会被路由到与路由键名称相同的队列。只有当消息的路由键与队列绑定时指定的路由键完全相同时,消息才会被路由到队列。这种交换机根据消息的路由键与队列绑定时指定的路由键模式(通配符)匹配程度,将消息路由到一个或多个队列。(匹配零个或多个单词),允许更灵活的消息路由。原创 2024-02-02 10:39:47 · 1120 阅读 · 0 评论 -
RabbitMQ交换机类型
发送消息时间,如果其他参数信息是{ "name":"xiaomingXX", "sex":"男" },因为queue2的x-match是any,只需要有一个键值对匹配所以就能接收到消息,所以queue2可以接收到消息;路由键与队列名完全匹配交换机,此种类型交换机,通过RoutingKey路由键将交换机和队列进行绑定, 消息被发送到exchange时,需要根据消息的RoutingKey,来进行匹配,只将消息发送到完全匹配到此RoutingKey的队列。键"x-match"的值有2个。原创 2024-02-02 10:51:28 · 766 阅读 · 0 评论 -
RabbitMQ 支持哪些消息模式?
另外,RabbitMQ 还支持双向同步的 RPC 机制,不过一般用得比较少。这些消息模式允许开发者根据应用程序的需求选择合适的消息通信方式,以满足不同的业务场景和可靠性要求。不同的模式可以用于构建各种类型的分布式系统和应用程序。RabbitMQ 支持多种消息传递模式,这些模式允许应用程序在不同的场景下进行灵活的消息交流。原创 2024-02-02 10:59:17 · 383 阅读 · 0 评论 -
RabbitMQ 如何实现消息的持久化?
RabbitMQ 允许消息的持久化,以确保即使在 RabbitMQ 服务器重新启动后,消息也不会丢失。RabbitMQ 的持久化机制会对其性能产生影响。因此,需要根据具体的业务场景和需求来权衡是否需要持久化以及需要哪种类型的持久化。原创 2024-02-02 11:08:31 · 781 阅读 · 0 评论 -
RabbitMQ 是如何实现死信队列的?
接下来,就可以往正常队列中发送消息。如果消息满足了某些条件,就会成为死信,并被重新发送到对应的死信队列中。而此时,RabbitMQ 会在消息的头部添加一些与死信相关的补充信息,例如时间、成为死信的原因、原队列等。应用程序可以按需处理这些补充的信息。最后,死信队列中的消息都是正常业务处理失败的消息,应用程序需要创建一个消费者来专门处理这些被遗漏的消息。例如记录日志、发送警报等。这样才能保证业务数据的完整性。死信队列是 RabbitMQ 提供的一种特殊序列,处理那些无法被正常消费的消息。原创 2024-02-02 11:17:56 · 355 阅读 · 0 评论 -
RabbitMQ 中如何进行事务处理?
需要注意的是,RabbitMQ 的事务处理是基于存储过程的,它可以保证在事务中的操作要么全部成功,要么全部失败。但是,由于 RabbitMQ 是一个异步的消息队列系统,事务处理可能会对其性能产生影响。因此,需要根据具体的应用场景和需求来权衡是否需要使用事务以及如何使用事务。RabbitMQ 提供了事务处理机制,允许生产者在发送消息时将操作包装在一个事务中,以确保消息的可靠性传递。在 RabbitMQ 中,事务是通过通道(Channel)来实现的。原创 2024-02-02 11:24:12 · 520 阅读 · 0 评论 -
常用的 RabbitMQ 插件
Shovel 插件用于将消息从一个 RabbitMQ 服务器传递到另一个 RabbitMQ 服务器,实现消息复制和跨集群通信。RabbitMQ 管理插件提供了一个 Web 管理界面,用于监控和管理 RabbitMQ 服务器。Prometheus 插件用于将 RabbitMQ 的性能指标导出到 Prometheus 监控系统,以便进行性能监控和警报。RabbitMQ 支持许多插件,这些插件可以扩展 RabbitMQ 的功能和特性。延迟消息插件允许发布延迟交付的消息,使你能够在稍后的时间点将消息传递给消费者。原创 2024-02-02 11:31:57 · 976 阅读 · 0 评论 -
RabbitMQ如何保证消息不丢失
当生产者通过 Confirm 模式发送消息时,它会等待 RabbitMQ 的确认,确保消息已经被正确地投递到了指定的 Exchange 中。当消息被消费者成功处理后,消费者发送确认(ACK)给 RabbitMQ,告知消息可以被移除。针对上述三种消息丢失场景,RabbitMQ 提供了相应的解决方案,confirm 消息确认机制(生产者),消息持久化机制(RabbitMQ 服务),ACK 事务机制(消费者)持久化机制是指将消息存储到磁盘,以保证在 RabbitMQ 服务器宕机或重启时,消息不会丢失。原创 2024-02-02 11:40:32 · 916 阅读 · 0 评论 -
RabbitMQ中如何解决消息堆积问题
1、消费者处理消息的速度太慢2、队列的容量太小3、网络故障4、消费者故障5、队列配置不当6、消息大小7、业务逻辑复杂或耗时8、消息产生速度快于消费速度9、其他配置优化原创 2024-02-03 14:17:42 · 1742 阅读 · 0 评论 -
RabbitMQ中如何保证消息不被重复消费
利用数据库唯一键约束可以利用我们的乐观锁插入消费记录不丢和不重是矛盾的(在分布式场景下),总的来说,开发者根据业务的实际需求来选择相应的方式即可。原创 2024-02-03 14:23:23 · 1050 阅读 · 0 评论