![](https://img-blog.csdnimg.cn/2020121610250712.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
消息中间件
主要讲解ActiveMQ技术、RabbitMQ技术等。
杨林伟
像火箭科学家一样思考!
展开
-
消息中间件系列教程(22) -Kafka- SpringBoot集成Kafka
引言代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringBoot-Kafka-Demo搭建教程上两篇博客又讲,可以参考:《消息中间件系列教程(20) -Kafka-集群搭建》《消息中间件系列教程(21) -Kafka- 集群搭建(自带Zookeeper)》为了方便起见,建议参考: 《消息中间件系列教程(21...原创 2019-12-16 16:59:28 · 433 阅读 · 0 评论 -
消息中间件系列教程(21) -Kafka- 集群搭建(自带Zookeeper)
在前面一篇文章中《消息中间件系列教程(20) -Kafka-集群搭建》,我们分别搭建了Zookeeper和Kafka来实现Kafka的集群。其实Kfaka里面的压缩包里面包含了Zookeeper,可以在里面配置,本文基于上一篇博客来讲解。1.首先新建kafka的日志目录和zookeeper数据目录(3台服务器同样操作)mkdir /usr/local/kafka/zookeeper ...原创 2019-12-16 16:37:16 · 532 阅读 · 0 评论 -
消息中间件系列教程(20) -Kafka-集群搭建
引言Kafka集群搭建主要分为两步:搭建Zookeeper集群搭建Kafka集群Zookeeper集群搭建在前面的章节已经讲过,可以参考:《Linux下Zookeeper集群环境搭建》由于受到硬件性能的影响(机子性能差),前面的Zookeeper集群搭建都在一台虚拟机里进行(ip:192.168.162.131),所以本文讲的Kafka也在同一台机子里搭建。其实原理都是一样的,多台机...原创 2019-12-13 10:19:39 · 493 阅读 · 0 评论 -
消息中间件系列教程(19) -Kafka-简介
1. Kafaka简介Apache Kafka是分布式发布-订阅消息系统,在 kafka官网上对 kafka 的定义:一个分布式发布-订阅消息传递系统。它最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。注意Kafka并没有遵循JMS规范,它只提供了发...原创 2019-12-12 20:24:04 · 458 阅读 · 0 评论 -
消息中间件系列教程(18) -RabbitMQ-基于RabbitMQ解决分布式事务(思想)
经典案例:以目前流行点外卖的案例,用户下单后,调用订单服务,让后订单服务调用派单系统通知送外卖人员送单,这时候订单系统与派单系统采用MQ异步通讯。RabbitMQ解决分布式事务原理: 采用最终一致性原理。根据最终一致性,按派单流程提出问题,解决分布式事务:1.怎么保证订单发送到了订单队列?答:采用确认机制,在生产者设置确认回调,如果不成功,则一直发送消息到消息队列。2.怎么保证消费...原创 2019-12-11 18:26:18 · 466 阅读 · 0 评论 -
消息中间件系列教程(17) -RabbitMQ-死信队列
引言本文代码已上传至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringBoot-RabbitMQ-Demo.git死信队列听上去像 消息“死”了 ,其实也有点这个意思,我们也可以称他为“备胎队列”。死信队列是当消息在一个队列因为以下原因产生的:消息被拒绝(basic.reject或basic.nack)并且reque...原创 2019-12-11 17:16:44 · 448 阅读 · 0 评论 -
消息中间件系列教程(16) -RabbitMQ-应答模式
在前面的章节中,消费者都是自动应答的:《消息中间件系列教程(13) -RabbitMQ-SpringBoot集成RabbitMQ》《消息中间件系列教程(14) -RabbitMQ-自动补偿机制》《消息中间件系列教程(15) -RabbitMQ-基于全局消息ID解决幂等性问题》那么消费者可以手动应答吗?答案是可以的下面基于《消息中间件系列教程(13) -RabbitMQ-SpringB...原创 2019-12-11 15:52:23 · 564 阅读 · 0 评论 -
消息中间件系列教程(15) -RabbitMQ-基于全局消息ID解决幂等性问题
使用RabbitMQ的时候,同一个消息可能会被消费者多次消费,那么该如何解决呢?可以使用全局MessageID,解决幂等性的问题。基于《消息中间件系列教程(13) -RabbitMQ-SpringBoot集成RabbitMQ》的环境,下面直接上代码进行讲解:1.生产者,定义一个全局MessageID:@Componentpublic class FanoutProducer { ...原创 2019-12-11 15:18:53 · 1347 阅读 · 0 评论 -
消息中间件系列教程(14) -RabbitMQ-自动补偿机制
在RabbitMQ里,如果消费者在处理消息时,业务逻辑出现异常,默认会执行补偿机制(也就是消息重试机制)。如果业务逻辑出现异常,是不会消费消息的。基于上一篇博客的例子《消息中间件系列教程(13) -RabbitMQ-SpringBoot集成RabbitMQ》来演示一下。现在消费者处理消息的地方模拟一个异常:生产者发送消息给消费者,会发现控制台一直在打印错误日志,也就是说,消费者一直在重试消费...原创 2019-12-11 14:25:59 · 2933 阅读 · 0 评论 -
消息中间件系列教程(13) -RabbitMQ-SpringBoot集成RabbitMQ
本文来讲解SpringBoot集成RabbitMQ,代码已上传到Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringBoot-RabbitMQ-Demo.git1. 生产者 1.新建生产者maven项目RabbitMQ-Producer: <parent> <groupId>org.spri...原创 2019-12-11 13:55:22 · 548 阅读 · 0 评论 -
消息中间件系列教程(12) -RabbitMQ-消息确认机制
引言代码已上传到Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/RabbitMQ-Demo场景:生产者发送消息出去之后,不知道到底有没有发送到RabbitMQ服务器, 默认是不知道的。而且有的时候我们在发送消息之后,后面的逻辑出问题了,我们不想要发送之前的消息了,需要撤回该怎么做。这个熟悉的场景容易的让我们想到了“事务”,其实Rabb...原创 2019-12-11 10:49:15 · 493 阅读 · 0 评论 -
消息中间件系列教程(11) -RabbitMQ -案例代码(通配符模式)
引言代码已上传至Github,有兴趣的同学可以下载看看:https://github.com/ylw-github/RabbitMQ-Demo前面博客讲解了RabbitMQ的五种队列形式《消息中间件系列教程(06) -RabbitMQ -五种队列形式》,主要讲解一下五种队列的代码实现。主要分为:点对点队列模式(简单)工作队列模式(公平性)发布订阅模式路由模式Routing通配...原创 2019-12-11 10:13:15 · 422 阅读 · 0 评论 -
消息中间件系列教程(10) -RabbitMQ -案例代码(路由模式)
引言代码已上传至Github,有兴趣的同学可以下载看看:https://github.com/ylw-github/RabbitMQ-Demo前面博客讲解了RabbitMQ的五种队列形式《消息中间件系列教程(06) -RabbitMQ -五种队列形式》,主要讲解一下五种队列的代码实现。主要分为:点对点队列模式(简单)工作队列模式(公平性)发布订阅模式路由模式Routing通配...原创 2019-12-11 09:59:41 · 415 阅读 · 0 评论 -
消息中间件系列教程(09) -RabbitMQ -案例代码(发布订阅模式)
引言代码已上传至Github,有兴趣的同学可以下载看看:https://github.com/ylw-github/RabbitMQ-Demo前面博客讲解了RabbitMQ的五种队列形式《消息中间件系列教程(06) -RabbitMQ -五种队列形式》,主要讲解一下五种队列的代码实现。主要分为:点对点队列模式(简单)工作队列模式(公平性)发布订阅模式路由模式Routing通配...原创 2019-12-10 20:34:03 · 616 阅读 · 0 评论 -
消息中间件系列教程(08) -RabbitMQ -案例代码(工作队列模式)
引言代码已上传至Github,有兴趣的同学可以下载看看:https://github.com/ylw-github/RabbitMQ-Demo前面博客讲解了RabbitMQ的五种队列形式《消息中间件系列教程(06) -RabbitMQ -五种队列形式》,主要讲解一下五种队列的代码实现。主要分为:点对点队列模式(简单)工作队列模式(公平性)发布订阅模式路由模式Routing通配...原创 2019-12-10 20:09:04 · 412 阅读 · 0 评论 -
消息中间件系列教程(07) -RabbitMQ -案例代码(点对点队列模式)
引言上一篇博客主要讲解了RabbitMQ的五种队列形式《消息中间件系列教程(06) -RabbitMQ -五种队列形式》,主要讲解一下五种队列的代码实现。主要分为:点对点队列模式(简单)工作队列模式(公平性)发布订阅模式路由模式Routing通配符模式Topics1. 点对点队列模式1.新建Maven项目RabbitMQ-Demo2.添加Maven依赖:<depen...原创 2019-12-10 16:09:10 · 496 阅读 · 0 评论 -
消息中间件系列教程(06) -RabbitMQ -五种队列形式
RabbitMQ队列类型Rabbit主要有以下5种消息队列:点对点队列模式(简单)工作队列模式(公平性)发布订阅模式路由模式Routing通配符模式Topics1. 点对点队列 功能:一个生产者投递消息给队列,只能允许有一个消费者进行消费。流程图:推拉模式:推:消费者已经启动了,建立长连接,一旦生产者向队列投递消息会马上推送给消费者。拉:生产者先投递消息到队列...原创 2019-12-10 14:17:18 · 1130 阅读 · 0 评论 -
消息中间件系列教程(05) -RabbitMQ -管理控制台的使用
引言在上一篇博客《消息中间件系列教程(04) -RabbitMQ -简介&安装》,介绍了RabbitMQ不同平台的安装与简介。本文主要将解下RabbitMQ控制台的使用。RabbitMQ登录管理控制台的地址:http://localhost:15672登录账号密码均为:guestRabbitMQ主要应用于大型互联网公司,学习之前,先来了解VirtualHost的概念:像MySQ...原创 2019-12-10 10:45:26 · 1747 阅读 · 0 评论 -
消息中间件系列教程(04) -RabbitMQ -简介&安装
1. 简介RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现。AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多公开标准(如 COBAR的 IIOP ,或者是 SOAP 等),但是在异步消息处理中却不是这样,只有大企业有一些商业实现(如微软的 MSMQ ,IBM 的 Websphere MQ 等),因此,在...原创 2019-12-09 18:01:54 · 515 阅读 · 0 评论 -
消息中间件系列教程(03) -ActiveMQ -点对点&发布订阅模式
引言代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringBoot-ActiveMQ-Demo在上一篇博客《ActiveMQ -安装&入门案例》中,里面的入门案例其实是ActiveMQ点对点的模式了,本文主要来讲解一下Active的发布订阅模式。1.生产者1.添加mave依赖:<parent>...原创 2019-12-06 11:35:35 · 419 阅读 · 0 评论 -
消息中间件系列教程(02) -ActiveMQ -安装&入门案例
引言代码已提交至Github,有兴趣的同学可以下载来看看:https://github.com/ylw-github/SpringBoot-ActiveMQ-DemoActiveMQ在Windows和Linux下的安装之前有讲过:《Linux下ActiveMQ的下载与安装》《Window下ActiveMQ的下载与安装》安装本文就不在讲解了,直接根据需求按以上两篇文章来安装。本文...原创 2019-12-06 11:09:58 · 373 阅读 · 0 评论 -
消息中间件系列教程(01) -知识回顾
引言关于消息中间件,在之前的《中间件-ActiveMQ专题》、《中间件 - Kafka专题》和《中间件 - MQTT专题》有讲述过,具体的内容目录表如下:Active-MQ专题:《为什么需要MQ及其好处》《常见消息中间件对比》《JMS简介》《ActiveMQ下载与安装》《JMS点对点模式》《JMS发布/订阅模式》Kafka专题:《Kafka介绍》《Kafka核心组件》...原创 2019-12-06 10:14:00 · 600 阅读 · 0 评论