
rabbitMQ
文章平均质量分 86
rabbitMQ
欧吉吉
这个作者很懒,什么都没留下…
展开
-
RabbitMQ(十)顺序消费
一,前言对于一些业务来说,需要确保消息被消费时候的顺序性。例如,有前后关系的查询-新增-删除这么三个消息,消费者必须按照这个顺序来消费,如果乱序就会出现结果不符合预期。二,解决方式前提是:必须要使用 生产者-队列-消费者 这种单消费者模式,为的就是防止消费者争抢消息导致顺序不一样。1,使用多队列的模式,例如我上边的那个例子,把它分发给三个队列,一个查询队列,一个新增队列,一个删除队列,每个队列对应一个消费者,这样子就可以保证顺序性。2.使用分组的思想。也是我上边那个...原创 2020-11-09 12:44:05 · 6759 阅读 · 3 评论 -
RabbitMQ(八)消息丢失
一,rabbitMQ消息的传递过程及可能发生丢失的地方消息从生产者产生,然后发生给rabbitMQ服务器,再发送给对应的消费者。在这个过程中,生产者发生消息的时候,可能会因为网络等问题,导致消息丢失了,也就是①的地方也可能rabbitMQ服务器挂掉了,造成的消息丢失,也就是②的地方也可能因为服务器发送消息给客户端,或者客户端出现错误(拿到消息后并没有正确完整地处理完对应的业务)而导致出错,也就是③最后,③这个地方说一下,因为rabbitMQ是把消息发送给消费者之后,它就会删除掉对应的原创 2020-11-07 20:15:34 · 1201 阅读 · 0 评论 -
rabbitMQ(七)实战-限流
一,什么是限流?为什么要限流?rabbitMQ的限流,就是指在消费者端,限制消费者接收消息的数量。之所以要限制消费者的流量,是因为,假设Rabbitmq 服务器积压了很多很多条消息,当我们打开一个消费者,巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多消息。类似于许多请求都到达数据库一样,会给我们的系统造成很大的压力,影响系统的性能,严重甚至会导致系统崩溃。那为什么要在消费者端限流呢,不在生产者端限流?因为,生产者消息的产生,是用户的行为,我们无法去约束它。例如,下单的时候,会产原创 2020-11-06 10:50:27 · 2233 阅读 · 0 评论 -
rabbitMQ(六)实战-使用死信队列来实现延时队列的效果
一,什么是死信队列?“死信”是RabbitMQ中的一种消息机制,当你在消费消息时,如果队列里的消息出现以下情况:消息被否定确认,使用channel.basicNack或channel.basicReject,并且此时requeue属性被设置为false。 消息在队列的存活时间超过设置的TTL时间。 消息队列的消息数量已经超过最大队列长度。那么该消息将成为“死信”,也就是过期消息。“死信”消息会被RabbitMQ进行特殊处理,如果配置了死信队列信息,那么该消息将会被丢进死信队列中,...原创 2020-11-06 03:11:47 · 405 阅读 · 0 评论 -
rabbitMQ(五)实战-springboot整合rabbitMQ和各种交换机的使用
一,springboot整合rabbitMQ为了后续的实战,这里创建2个项目,一个消息生产者,一个消息消费者。rabbitMQ的基本配置信息很简单,就一个pom引入和yml配置连接信息,详细如下图所示:第一步,pom文件引入rabbitMQ,也需要引入web模块,为了后续的实战需要。第二步,配置yml的连接信息两个项目的配置都是类似的,就server.port和spring.application.name需要修改。二,各种类型交换机的实战1.Direct Exch.原创 2020-11-02 15:56:43 · 414 阅读 · 0 评论 -
rabbitMQ(四)应用场景
一,服务解耦两个高耦合的服务,通过消息中间件的使用,从而变成低耦合。例子:订单系统需要和库存系统配合实现业务。订单系统的业务需要使用到库存系统的服务,但是,当使用库存系统出现错误,或者库存系统某一段时间内,不可用,那么随之造成的结果是,订单系统也变成不可用了。引入消息队列后:订单系统把订单信息发送到消息队列里边,即可给客户反馈下单操作完成,不需要等待库存系统的响应。同样的,库存系统只需要负责从消息队里里边取出信息即可,如果在处理过程中发生错误了,只需要再通知客户即可。当客户.原创 2020-11-02 00:43:17 · 247 阅读 · 0 评论 -
rabbitMQ(三)交换机的类型
一,Direct Exchange处理路由键。需要将一个队列绑定到交换机上,要求该消息与一个特定的路由键完全匹配。这是一个完整的匹配。如果一个队列绑定到该交换机上要求路由键 “dog”,则只有被标记为“dog”的消息才被转发,不会转发dog.puppy,也不会转发dog.guard,只会转发dog。二,Fanout Exchange不处理路由键。你只需要简单的将队列绑定到交换机上。一个发送到交换机的消息都会被转发到与该交换机绑定的所有队列上。Fanout交换机转发消息是最快的。...原创 2020-11-01 19:52:51 · 276 阅读 · 0 评论 -
rabbitMQ(二)六大应用模式
一,简单模式生产者不经过交换机的路由,直接把消息放到队列里边去,消费者则监听消息队列,如果有消息,则直接消费掉,然后队列里的消息就会被自动删除。注:这个模式有个问题,就是如果在消费者消费消息的时候出现问题了,那么这个时候消息已经被自动删除掉了,这就会造成消息的丢失。具体的解决方法,留到之后再介绍。二,work工作模式(资源的竞争)生产者把消息放入队列里,多个消费者同时监听着这个队列。如果队列里有消息,则多个消费者同时争夺消息,谁抢到那么就谁去处理这个消息。注:在高并发的坏境下,.原创 2020-11-01 19:35:49 · 295 阅读 · 0 评论 -
rabbitMQ(一)基本介绍
一,基本介绍RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。AMQP(Advanced Message Queue:高级消息队列协议)它是应用层协议的一个开放标准,为面向消息的中间件设计,基于此协议的客户端与消息中间件可传递消息,并不受产品、开发语言等条件的限制。RabbitMQ 最初起源于消息系统,用于在分布式系统中存储转发消息,具体有如下一些特点:可靠性:RabbitMQ 使用一些机制来保证可靠性,比如持久化、传输确认机制(ack)和发布确认等。 灵活的路由策略:.原创 2020-11-01 19:06:34 · 425 阅读 · 0 评论