【中间件笔记】
文章平均质量分 83
RabbitMQ、RocketMQ、Kafka、Nginx等中间件相关笔记。
Mr.小朱同学
Java 开发工程师,从事 Web 应用程序的研发,擅长 Spring、SpringBoot 等技术。
热爱编程,业余时间学习新知识,通过 CSDN 记录学习心得和笔记内容。
展开
-
【Nginx笔记02】通过Nginx服务器转发客户端的WebSocket接口到后端服务
今天在工作中,遇到了一个需求,这个需求大概是前端和后端需要采用WebSocket方式来进行通信,因为是WebSocket接口,需要客户端需要知道通讯的接口地址,WebSocket接口的地址格式是:【ws://ip:port/xxx/yyy】,其中ip和port是后端服务提供的,/xxx/yyy是后端服务中提供的具体WebSocket接口地址。不依然会断开连接吗。这种情况下,我们客户端如果再次发送消息,就会抛出异常,因为WebSocket连接已经断开,无法发送消息,那么要如何解决这个问题呢?原创 2024-02-27 21:50:16 · 6929 阅读 · 0 评论 -
【RocketMQ笔记02】安装RocketMQ可视化工具rocketmq-dashboard
使用IDEA打开刚刚解压得到的dashboard工程,因为rocketmq-dashboard是需要连接RocketMQ消息队列服务的,所以在它的配置文件中,需要指定RocketMQ消息队列的服务地址,修改application.properties配置文件中的rocketmq.config.namesrvAddr属性。打包成功之后,就可以在target目录下面找到生成的jar包,这个jar就是可执行的rocketmq-dashboard程序。原创 2023-12-26 23:38:20 · 3733 阅读 · 2 评论 -
【RocketMQ笔记01】安装RocketMQ消息队列运行环境
这篇文章,主要介绍如何安装RocketMQ消息队列运行环境。原创 2023-12-25 21:37:14 · 1059 阅读 · 0 评论 -
【Nginx笔记01】Nginx配置文件介绍、反向代理、负载均衡
nginx配置文件是位于【conf】目录下的【nginx.conf】文件,这个文件中有三大部分组成,分别是:全局块、events块、http块。全局块:定义一些全局变量,写在nginx.conf配置文件最开头部分。例如:可以定义工作进程数量、日志文件路径、pid文件位置、用户组等。events块:配置nginx选择哪种事件驱动模型来处理网络连接,例如:指定每一个工作进程最多可以处理多少个连接。http块:这是最经常修改的配置部分,这个模块用于配置HTTP网络服务相关信息。原创 2023-04-23 20:07:15 · 880 阅读 · 0 评论 -
【RabbitMQ笔记10】消息队列RabbitMQ之死信队列的介绍
在RabbitMQ中,并没有提供真正意义上的延迟队列,但是RabbitMQ可以设置队列、消息的过期时间,当队列或者消息到达过期时间之后,还没有被消费者消费,那么RabbitMQ会将这些消息放入另外一个队列,这个队列叫做:死信队列,而这个过期的消息就叫做:死信消息。哪些情况下,消息会变成死信消息???第一种情况:Queue队列已经满了,无法保存新进入的消息,那么这个消息就会被放入死信队列。第二种情况:队列中的消息被消费者拒绝消费了,并且没有设置重新放入Queue队列里面。原创 2023-03-19 10:45:00 · 2812 阅读 · 0 评论 -
【RabbitMQ笔记09】消息队列RabbitMQ之常见方法的使用
RabbitMQ中连接消息队列服务器,是通过ConnectionFactory连接工厂来统一管理所有的Connection连接请求的,创建连接对象的时候,可以指定需要连接的RabbitMQ的IP地址、端口号、虚拟主机、连接用户名、密码、连接超时时间、创建连接对象等等。ConnectionFactory是RabbitMQ客户端提供的一个连接工厂类,通过该类可以获取到具体的Connection连接对象,下面看下原创 2023-02-28 22:25:09 · 847 阅读 · 0 评论 -
【RabbitMQ笔记08】消息队列RabbitMQ之防止消息丢失的三种方式(生产者消息确认、消费者消息确认、消息持久化)
RabbitMQ消息队列,在使用的时候,可能会存在消息丢失的情况,所谓的消息丢失就是生产者发送的消息没办法被消费者正确的消费,消息队列中导致消息丢失的地方有三个,分别是:第一种情况:生产者发送的消息没有正确的发送到RabbitMQ里面,导致发送的消息丢失。第二种情况:消费者从RabbitMQ消费消息时候,消费失败,但是RabbitMQ认为消费成功,从而删除了消息。第三种情况:RabbitMQ中保存的消息还没有被消费者消费,此时RabbitMQ服务宕机,导致内存中的消息丢失。原创 2023-02-27 21:35:01 · 5470 阅读 · 0 评论 -
【RabbitMQ笔记07】消息队列RabbitMQ七种模式之Publisher Confirms发布确认模式
RabbitMQ消息队列中,生产者发送消息给RabbitMQ的时候,可能会出现发送失败的情况,如果不进行处理,此时这一条消息就将丢失。如何确保生产者一定能够将消息发送到RabbitMQ里面呢???RabbitMQ提出了一种发布确认模式,这种模式大致思想是:生产者发送消息给RabbitMQ时候,如果RabbitMQ正确接收到消息后,需要发给一个ACK标识给生产者,生产者接收到ACK标记后,就可以确认这一条消息发送成功啦。如果生产者没有接收到ACK标识,则可以重复发送这一条消息给RabbitMQ,这就可以确原创 2023-02-26 19:37:50 · 2203 阅读 · 0 评论 -
【RabbitMQ笔记06】消息队列RabbitMQ七种模式之Topics主题模式
前一篇文章介绍了Routing路由模式,它是根据消息的唯一标识routing key路由键,将其分发到不同的Queue队列里面,这篇文章介绍的Topics主题模式,也是需要依赖与routing key路由键来进行分发消息,但是不同的是,Topics主题可以采用通配符的方式来指定routing key。Topics主题模式下,它要求【routing key路由键】必须采用【多个单词】来表示,每一个单词采用点好【.】分割,例如:【xxx.yyy.zzz】,这就是三个单词,分别是:xxx、yyy、zzz,路由原创 2023-02-26 13:50:37 · 2188 阅读 · 0 评论 -
【RabbitMQ笔记05】消息队列RabbitMQ七种模式之Routing路由键模式
RabbitMQ中提供的Routing模式,就是根据RoutingKey来决定这条消息应该分发到哪个Queue队列里面,一般的,Routing模式中Exchange交换机都是采用【direct】直接模式。生产者发送的每一条消息都会携带一个routing key,Exchange根据这个routing key将其分发到对应的Queue队列里面。一个Queue队列可以绑定多个routing key。原创 2023-02-25 21:18:09 · 1588 阅读 · 0 评论 -
【RabbitMQ笔记04】消息队列RabbitMQ七种模式之发布订阅模式(Publish/Subscribe)
RabbitMQ中,发布订阅模式就是指定Exchange交换机的类型是【fanout】,然后RabbitMQ就会将消息分发到所有和这个Exchange交换机绑定的Queue消息队列里面,此时所有的消费者都可以接收到这一条消息。注意:对于发布订阅模式来说,消息的路由键RouteKey是没有作用的,可以不写。原创 2023-02-25 17:47:30 · 2144 阅读 · 0 评论 -
【RabbitMQ笔记03】消息队列RabbitMQ七种模式之WorkQueues工作队列模式
在某些情况下,当RabbitMQ中的消息积压的非常多的时候,一个消费者没办法消费,那么这个时候就可以增加消费者数量,以此来加快消息的消费。我们把所有消费者都看作是在同一个队列里面的,那么这个队列就可以理解称为工作队列,因为都是进行消费消息的。Work Queues模式下,每一个消费者能够分配到的消息数量都是大致相同的,RabbitMQ采用轮询的方式,依次给每一个消费者分发消息。工作队列模式提高了消息的并发消费,并且每一个消息只会被分发到一个消费者上面。原创 2023-02-25 17:02:59 · 582 阅读 · 0 评论 -
【RabbitMQ笔记02】消息队列RabbitMQ七种模式之最简单的模式
最简单的模式,只有一个消息队列,生成者向指定的消息队列里面发送消息,然后消费者从指定的消息队列里面消费消息。运行消费者代码,查看控制台输出,以及RabbitMQ控制界面,可以发现,此时消息队列中的消息不存在了。运行上面的生产者代码,查看RabbitMQ控制台,可以发现此时有一条消息啦。到这里,RabbitMQ最简单的消息发送和消费就完成啦。原创 2023-02-25 16:42:47 · 955 阅读 · 0 评论 -
【RabbitMQ笔记01】Windows搭建RabbitMQ消息队列基础运行环境
RabbitMQ是一款遵循AMQP协议的消息队列,这里说的AMQP是一个高级消息队列协议,它定义了消息队列的基础模型,AMQP协议的消息队列有很多,其中RabbitMQ就是其中之一。消息队列,其实就是一个专门用于存储消息的容器,生产者生产消息,消费者消费消息。RabbitMQ是一个采用Erlang语言编写的消息队列,要使用RabbitMQ,首先就需要确保系统中存在Erlang的运行环境。原创 2023-02-14 20:06:50 · 1355 阅读 · 0 评论