![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
RabbitMQ
四月丶丶
越努力越幸运
展开
-
RabbitMQ消息可靠性解决方案
1. 解决方案客户端代码中的异常捕获,包括生产者和消费者AMQP/RabbitMQ的事务机制发送端确认机制消息持久化机制Broker端的高可用集群消费者确认机制消费端限流消息幂等性2. 异常捕获机制先执行业务操作,业务操作成功后执行消息发送,消息发送过程通过try catch 方式捕获异常, 在异常处理理的代码块中执行行回滚业务操作或者执行行重发操作等。这是一种最大努力确保的方式, 并无法保证100%绝对可靠,因为这里没有异常并不代表消息就一定投递成功。boolean result原创 2020-10-28 23:05:44 · 983 阅读 · 1 评论 -
RabbitMQ工作模式详解
1. Work Queue生产者发消息,启动多个消费者实例来消费消息,每个消费者仅消费部分信息,可达到负载均衡的效果。2. 发布订阅模式使用fanout类型交换器,routingKey忽略。每个消费者定义生成一个队列并绑定到同一个 Exchange,每个消费者都可以消费到完整的消息。消息广播给所有订阅该消息的消费者。在RabbitMQ中,生产者不是将消息直接发送给消息队列,实际上生产者根本不知道一个消息被发 送到哪个队列。生产者将消息发送给交换器。交换器非常简单,从生产者接收消息,将消息推送给消原创 2020-10-28 22:14:58 · 310 阅读 · 0 评论 -
RabbitMQ工作流程详解
1. 生产者发送消息的流程生产者连接RabbitMQ,建立TCP连接( Connection),开启信道(Channel)生产者声明一个Exchange(交换器),并设置相关属性,比如交换器类型、是否持久化等生产者声明一个队列井设置相关属性,比如是否排他、是否持久化、是否自动删除等生产者通过 bindingKey (绑定Key)将交换器和队列绑定( binding )起来生产者发送消息至RabbitMQ Broker,其中包含 routingKey (路由键)、交换器等信息相应的交换器根据接收原创 2020-10-28 21:55:30 · 1968 阅读 · 0 评论 -
RabbitMQ数据存储结构及原理
1. 存储机制RabbitMQ消息有两种类型:持久化消息和非持久化消息。这两种消息都会被写入磁盘。持久化消息在到达队列时写入磁盘,同时会内存中保存一份备份,当内存吃紧时,消息从内存中清除。这会提高一定的性能。 非持久化消息一般只存于内存中,当内存压力大时数据刷盘处理,以节省内存空间。 RabbitMQ存储层包含两个部分:队列索引和消息存储。2. 队列索引:rabbit_queue_index索引维护队列的落盘消息的信息,如存储地点、是否已被给消费者接收、是否已被消费者ack等。 每个队列都原创 2020-10-28 21:50:33 · 5449 阅读 · 0 评论 -
RabbitMQ Exchange类型
RabbitMQ常用的交换器类型有: fanout 、 direct 、 topic 、 headers 四种。1. Fanout会把所有发送到该交换器的消息路由到所有与该交换器绑定的队列中,如图:2. Directdirect类型的交换器路由规则很简单,它会把消息路由到那些BindingKey和RoutingKey完全匹配的 队列中,如下图:3. Topictopic类型的交换器在direct匹配规则上进行了扩展,也是将消息路由到BindingKey和RoutingKey 相匹配的队列中,原创 2020-10-28 21:14:15 · 96 阅读 · 0 评论 -
Linux安装RabbitMQ
1. RabbitMQ介绍RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消原创 2020-08-28 16:22:03 · 889 阅读 · 0 评论