健身俱乐部网站建设方案设计,wordpress小成语,百度一下百度网页官,网站怎么企业备案信息查询RabbitMQ发布确认机制详解
一、引言 在消息队列#xff08;MQ#xff09;技术中#xff0c;RabbitMQ因其稳定性、可靠性和易用性而受到广泛欢迎。为了确保消息的可靠传递#xff0c;RabbitMQ提供了一系列高级特性#xff0c;其中发布确认#xff08;Publisher ConfirmsMQ技术中RabbitMQ因其稳定性、可靠性和易用性而受到广泛欢迎。为了确保消息的可靠传递RabbitMQ提供了一系列高级特性其中发布确认Publisher Confirms机制就是其中之一。本文将深入探讨RabbitMQ的发布确认机制以及它如何在消息发布过程中发挥作用。
二、发布确认机制概述 RabbitMQ的发布确认机制是一种增强消息发布可靠性的方法。当生产者Producer启用发布确认功能后每次发送消息到RabbitMQ时都会获得一个唯一的序列号delivery tag并从1开始递增。一旦消息被成功路由到至少一个匹配的队列并且满足持久化条件如果已配置RabbitMQ会向生产者发送一个包含已确认消息序列号的basic.ack消息。
三、发布确认的三种模式 单条发布确认 在发布一条消息后生产者等待RabbitMQ的确认。缺点是每条消息都需要等待确认可能导致性能开销较大特别是在高并发场景下。 批量发布确认 生产者可以一次发送多条消息然后等待RabbitMQ的批量确认。当一批消息中有一条发送失败时整个批量确认会失败可能需要重新发送整批消息且不容易定位到具体哪条消息失败。 异步发布确认 生产者不直接等待每条消息的确认而是通过回调函数或其他机制异步处理确认消息。这种模式可以提高性能但也需要更复杂的编程逻辑来确保消息的可靠性。
四、如何启用发布确认 启用发布确认功能相对简单。生产者需要先将信道设置为确认模式通过Channel.confirmSelect()方法来激活该功能。此后发送的每条消息都将获得一个序列号并等待RabbitMQ的确认。
RabbitMQ交换机类型详解 RabbitMQ作为一款广泛使用的开源消息队列软件其强大的路由功能得益于其灵活的交换机Exchange类型。交换机在RabbitMQ中扮演着将消息路由到正确队列的关键角色。本文将详细介绍RabbitMQ中的四种主要交换机类型Fanout、Direct和Topic。
一、Fanout交换机 Fanout交换机也被称为广播交换机是RabbitMQ中最简单的交换机类型。当消息发送到Fanout交换机时它会将消息广播到所有绑定到该交换机的队列中。这种交换机不考虑消息的路由键Routing Key因此消息传递的速度非常快。 二、Direct交换机 Direct交换机是一种带路由功能的交换机。它根据消息的路由键将消息路由到具有相同绑定键Binding Key的队列中。这意味着消息的路由键必须与队列的绑定键完全匹配消息才会被路由到该队列。 在上面这张图中我们可以看到 X 绑定了两个队列绑定类型是 direct。队列 Q1 绑定键为 orange队列 Q2 绑定键有两个:一个绑定键为 black另一个绑定键为 green. 在这种绑定情况下生产者发布消息到 exchange 上绑定键为 orange 的消息会被发布到队列Q1。绑定键为 blackgreen 和的消息会被发布到队列 Q2其他消息类型的消息将被丢弃。
三、Topic交换机 Topic交换机在Direct交换机的基础上增加了模式匹配功能。它使用路由键中的点分隔符来支持更灵活的匹配规则。在Topic交换机中可以使用“*”来匹配一个单词使用“#”来匹配零个或多个单词。 下图绑定关系如下 Q1-- 绑定的是中间带 orange 带 3 个单词的字符串 (*.orange.*) Q2-- 绑定的是最后一个单词是 rabbit 的 3 个单词 (*.*.rabbit)第一个单词是 lazy 的多个单词 (lazy.#) 上图是一个队列绑定关系图我们来看看他们之间数据接收情况是怎么样的 quick.orange.rabbit 被队列 Q1Q2 接收到 lazy.orange.elephant 被队列 Q1Q2 接收到 quick.orange.fox 被队列 Q1 接收到 lazy.brown.fox 被队列 Q2 接收到 lazy.pink.rabbit 虽然满足两个绑定但只被队列 Q2 接收一次 quick.brown.fox 不匹配任何绑定不会被任何队列接收到会被丢弃 quick.orange.male.rabbit 是四个单词不匹配任何绑定会被丢弃 lazy.orange.male.rabbit 是四个单词但匹配 Q2