
中间件
sswqzx
这个作者很懒,什么都没留下…
展开
-
消息队列 (MQ)
1、消息队列概述消息队列(Message Queue): 是一种应用程序对应用程序通信的方式、生产者不断向消息队列中生产消息、消费者不断从队列中获取消息、生产者不是直接和消费者通信。2、消息队列的实现方式MQ是消息通信的模型、现在实现MQ有二种主流方式:AMQP、JMSAMQP:(advanced message queuing protocol)、提供统一消息服务的应用层标准高级...原创 2019-01-08 08:50:41 · 370 阅读 · 0 评论 -
RabbitMQ集群
一、RabbitMQ集群概述rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式1、单机模式:本地测试用、生产环境不会用2、普通集群模式:意思就是在多台机器上启动多个rabbitmq实例,每个机器启动一个。但是你创建的queue,只会放在一个rabbtimq实例上,但是每个实例都同步queue的元数据、消费的时候、会从queue所在实例上拉取数据过来、前者有...原创 2019-01-08 08:50:53 · 1503 阅读 · 0 评论 -
RabbitMQ数据丢失
1)生产者弄丢了数据生产者将数据发送到rabbitmq的时候,可能数据就在半路给搞丢了,因为网络啥的问题,都有可能。解决:RabbitMQ提供transaction和confirm模式来确保生产者不丢消息。transaction机制就是说,发送消息前开启事物(channel.txSelect()),然后发送消息,如果发送过程中出现什么异常,事物就会回滚(channel.txR...原创 2019-01-08 08:51:07 · 5594 阅读 · 3 评论 -
RabbitMQ保证不消费重复数据
1.当拿到这个消息做数据库的insert操作。那就容易了,给这个消息做一个唯一主键,那么就算出现重复消费的情况,就会导致主键冲突,避免数据库出现脏数据。 2.当拿到这个消息做redis的set的操作,那就容易了,不用解决,因为你无论set几次结果都是一样的,set操作本来就算幂等操作。 3.如果上面两种情况还不行,准备一个第三方存储,来做消费记录。以redis为例,给消息...原创 2019-01-08 08:51:00 · 11898 阅读 · 0 评论