首页 > 编程知识 正文

什么是rabbitmq,rabbitmq模型

时间:2023-05-05 21:35:17 阅读:22266 作者:1019

rabbitmq工作原理目录中的重要概念工作模式图交换机类型集群模式如何确保消息正确发送rabbitmq? 你是怎么确认消费者消费了信息的? (总之,如何确保可靠性)如何避免重复消耗;如何确保消息的幂等性;如何避免消息丢失;如何确保消息的顺序)消息何时死信,可以用于死信队列

目录

原始归纳的rabbitmq原理

重要概念AMQP协议—提供客户端APP应用程序和消息中间件之间异步、安全、高效交互的二进制协议。 AMQP基于模块化分为两个部分。 交换机消息队列

生产者:发生新闻

消费者:接受信息

队列:存储消息的缓存

新闻:生产者发生的内容

连接: rabbitmq与服务器之间的tcp连接

通道:向队列发送或接收消息的虚拟通道

交换机:从生产者那里接收消息,根据交换机类型将其分发到相应的消息队列中

队列必须绑定交换机

绑定:连接队列和交换机

大眼睛果汁:不同消息队列的键名

动作模式图

生产者在交换机上携带消息,交换机通过绑定和大果汁分发,消息队列分发给多个消费者。

交换机类型直接direct :直接交换机通过消息队列的大眼睛果汁分发消息。

扇出:扇出交换机发送绑定到队列的所有消息。

主题主题:主题开关基于直接开关,通过基于大眼睛果汁进行通配符匹配,可以模糊匹配多个消息队列。

消息头headers :消息交换机被消息头的属性消耗

集群型普通集群:多个节点不相互保存各自的信息

镜像群集:多个节点各自都有自己的信息,并且被复制了一份。

集群的缺点:不支持横向扩展,个别负荷过高会导致集群雪崩。

可以通过HA同步策略解决。 有以下HA同步策略:

All镜像队列将在整个群集上复制。 新节点加入后,也会复制到该节点。

Exactiy镜像队列在群集上复制计数部分。 如果群集数小于count,则队列将复制到所有节点。 如果大于Count群集,则一个节点关闭后,进入新节点不会发生新的镜像。 (可以阻止集群雪崩) )。

Nodes镜像队列将在node name中复制。 如果此名称不是群集之一,则这不会引起错误。 如果此节点列表中没有联机节点,则会在客户端连接的节点上声明此队列。

如何确保消息正确发送rabbitmq? 你是怎么确认消费者消费了信息的? )总之如何保证可靠性)1)发送方确认模式:

频道设置confim模式,消息总是在频道后具有唯一id,并且在消息被发送到消息队列后,频道向生产者返回该唯一id。 弱rabbitmq的内部错误导致消息丢失,通道向生产者发送未确认消息的信号

2 )接收方确认机制:

消费者都需要确认。

如何避免重复消费(如何保证消息的幂等性)在写入消息时做唯一标记; 消费新闻时,也用这个唯一的表示消费。

为了避免丢失消息,必须首先持久化此数据。 然后,交换机收到消息请求时,首先将其记录在本地日志文件中,然后将此信息标记为等待垃圾回收。 在一次未消耗之前停机,并在下次重新启动时重建交换机和队列以重新消耗

如何按顺序消费消息1 )保证在同一列,如何只由一个消费者消费。

2 )发送时,不通过多线程发送,而是一个个发送

3 )发货结束后采用确认机制,发货结束后进行下一次发货

消息什么时候死信? 死信队列中有什么可以使用的场景? 1 )拒绝或过期消息

2 )消息积累后,队列长度超过

场景:延迟排队,等待指定时间,然后消费者拿到这个消息进行消费。 设置TTL到期日期。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。