
MQ消息队列
文章平均质量分 76
ZZYSY~
这个作者很懒,什么都没留下…
展开
-
如何保证MQ消息队列的可靠性传输
MQ的基本原则:数据不能多一条,也不能少一条,不能多,就是要保证幂等性,不能少,就是要保证可靠性,数据不能发生丢失RabbitMQ生产者丢失数据可能在生产者向RabbitMQ发送消息的中途发生数据丢失第一种方法是使用RabbitMQ提供的事务机制,在生产者发送数据之前开启RabbitMQ 事务channel.txSelect,然后发送消息,如果该消息没有接收到,就会发生异常,然后执行回滚事务channel.txRollback,然后重新发送消息即可,如果收到了消息,就执行提交事务channel.tx原创 2022-03-01 10:15:23 · 732 阅读 · 0 评论 -
如何保证MQ消息队列的幂等性
对于每个消息,都有一个offset,用来代表这条消息的序号,消费者消费了消息之后每隔一段时间都会把自己所消费的消息的offset提交一下,下次消费的时候就按上次的offset接着来。这样就会出现一个问题,如果消费者已经消费了一条消息,在提交之前,消费者进程被重启了或者发生意外宕机了,这样的话,当消费者再次启动之后,它还会重复消费这条消息,如果消费者对消息的处理是在数据库中插入一条记录,那么这样的话就会重复插入两个一样的记录,显然是不正确的。那么我们要怎样保证幂等性呢?假如消费者在消费消息的时候会往数据库原创 2022-02-27 22:45:27 · 1886 阅读 · 0 评论 -
如何保证MQ消息队列的高可用
RabbitMQ对于RabbitMQ,有三种模式,分别是单机模式,普通集群模式、镜像集群模式,其中镜像集群模式可以实现高可用单机模式一台RabbitMQ实例,想想都不可能保证高可用,一般在开发中也不会使用单机模式普通集群模式有多台RabbitMQ实例,每个都放在单独的机器上,生产者生产出的queue只放在其中一个RabbitMQ实例上,其他实例上存放的是queue元数据(元数据存放一些RabbitMQ的配置信息,可以通过元数据找到拥有实际数据的queue),如果消费者拉取的正好是放有queue实际原创 2022-02-26 19:09:24 · 2414 阅读 · 0 评论 -
什么是MQ消息队列
什么是消息队列相当于存放消息的一个容器,生产出来的消息都放到这个容器里面,如果我们想使用消息就直接从容器中取即可,是分布式系统中重要的组件,常用的消息队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ。通过提供消息传递和消息排队模型,它可以在分布式环境下提供应用解耦、弹性伸缩、冗余存储、流量削峰、异步通信、数据同步等等功能。为什么要使用消息队列解耦使用发布订阅模式,生产者发布消息,消费者订阅消息,生产者把消息放到分布式消息队列中就结束了对这个消息的管理,消费者从分布式消息队列中原创 2022-02-25 22:32:26 · 1602 阅读 · 0 评论