![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
消息中间件MQ
zdwhong
在java道路上越走越远
展开
-
消息中间件(一)——MQ的优缺点及各个消息中间件的比较
1、什么是MQ 消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。 上面的这个是百度百科对MQ的定义,简单来说MQ就是用来系统之间进行数据传递的。比如:A系统和B系统之间要进行消息传递,我们常用的方式可能是某一个系统提供一个接口,另一个系统调用该接口来传递数据,从而满足业务需...原创 2019-09-05 16:04:30 · 3710 阅读 · 0 评论 -
消息中间件(二)——RabbitMQ和Kafka的高可用
上一讲我们说到了使用MQ的好处,同时也对比了各种消息中间件的区别及其优势。这一次我们就来说说消息队列的高可用的原理。这里主要讲的是现在使用比较多的RabbitMQ和大数据相关的Kafka两种消息中间件的高可用。这里只是讲解他们的实现原理,不会实战。1、RabbitMQ的高可用RabbitMQ是基于主从复制来实现高可用的,不支持分布式。既然是主从复制,那么肯定就不是单台机器能保...原创 2019-09-05 23:01:23 · 509 阅读 · 0 评论 -
消息中间件(三)——如何保证消息幂等性
1、什么是消息的幂等性幂等:在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。这是百度百科给出的幂等的概念。消息的幂等性:就是即使多次收到了消息,也不会重复消费。所以保证消息的幂等性就是保证消息不会重复消费,这在开发中是很重要的。比如客户点击付款,如果点击了多次,那也只能扣一次费。2、MQ的幂等性如何保证我们所熟悉的RabbitMQ、RocketMQ、k...原创 2019-09-06 17:48:30 · 10114 阅读 · 1 评论 -
消息中间件(四)——如何保证消息不丢失(可靠性传输)
上一次讲了消息的幂等性,也就是消息如何保证不重复消息,就是我们不能多消费任何一条消息,不然就会导致数据的不一致。而今天,我们了解下怎么保证消息的可靠性传输,也就是说,怎么样保证消息不丢失,从生产者生产出一条消息开始,一直到消费者成功消费该消息,中间不能丢失消息。这个问题也是使用MQ必须要考虑的。 下面分别从RabbitMQ和Kafka来说明他们在消息传输中,是如何保证...原创 2019-09-07 21:58:00 · 10182 阅读 · 4 评论 -
消息中间件(五)——如何保证消息的顺序性
当我们的系统中引入了MQ之后,不得不考虑的一个问题是如何保证消息的顺序性,这是一个至关重要的事情,如果顺序错乱了,就会导致数据的不一致。 比如:业务场景是这样的:我们需要根据mysql的binlog日志同步一个数据库的数据到另一个库中,加如在binlog中对同一条数据做了insert,update,delete操作,我们往MQ顺序写入了insert,update,de...原创 2019-09-09 15:26:02 · 6385 阅读 · 0 评论 -
消息中间件(六)——RabbitMQ的入门案例
1、RabbitMQ的安装 RabbitMQ是用Erlang语言开发的,所以需要依赖Erlang的环境,因此在安装RabbitMQ之前要先安装Erlang。而他们之间是有版本对应关系的,可以从如下去查看:https://www.rabbitmq.com/download.html进入这个网址之后(网址是英文的,现在的浏览器可以翻译为中文的),然后就可以看到如下表格:...原创 2019-09-17 09:17:56 · 247 阅读 · 0 评论 -
消息中间件(七)——RabbitMQ的工作模式(Publish/Subscribe)
RabbitMQ有以下几种工作模式 : 1、Work queues 2、Publish/Subscribe 3、Routing 4、Topics 5、Header 6、RPC1、Work Queues模式work queues与入门程序相比,多了一个消费端,两个消费端共同消费同一个队列中的消息。 应用场景:对于任务过重或任务较多情况使用工作队列可以提高任务处理的速度。 测试:...原创 2019-09-18 10:11:58 · 523 阅读 · 0 评论 -
消息中间件(八)——RabbitMQ的工作模式(Routing)
1、概述Routing是路由模式,它有如下特点:1、每个消费者监听自己的队列,并且设置routingkey(路由key)。2、生产者将消息发给交换机,交换机根据routingkey来转发消息到指定的队列。该图中,指明了Routing模式的工作原理,X表示的交换机,交换机类型要设置为direct,error,info等都是routingKey。2、代码实现2.1 生产者代...原创 2019-09-19 15:23:06 · 848 阅读 · 0 评论 -
消息中间件(九)——SpringBoot整合RabbitMQ(Routing)
1、概述 前面我们已经进行了入门程序的编写,也讲解了两种工作模式:发布/订阅模式和路由模式。这一次进行SpringBoot和RabbitMQ的整合开发,用到的工作模式还是路由模式。基于入门程序进行开发,整体的工程结构如下:2、搭建环境2.1 父工程的pom.xml在rabbitmq的工程的pom文件中,完善依赖,具体如下:<?xml version="1...原创 2019-09-19 17:50:20 · 354 阅读 · 0 评论