消息中间件
文章平均质量分 91
消息中间件
不断前进的皮卡丘
你有多努力的现在,就会有多无惧的未来。加油吧,少年!
展开
-
RabbitMQ:发布确认高级
在application.properties全局配置文件中添加spring.rabbitmq.publish-confirm-type属性,这个属性有以下几种值。交换机收到两条信息,但是消费者只能消费一条消息,因为第二条消息的路由key和交换机的binding key不一样,也没有其他队列可以接收这条消息,所以就被丢弃了。正常运行结果如图所示,如果rabbitmq出现故障的话,那么结果是不会显示出来的,我们可以通过回调接口来监测运行结果。原创 2022-10-17 13:35:35 · 2325 阅读 · 18 评论 -
RabbitMQ:延迟队列
一般队列中的元素总是希望能够早点被取出来进行处理,但是延迟队列中的元素则是希望可以在指定时间内被取出和处理,延迟队列中的元素都是带有时间属性的。延迟队列就是用来存放需要在指定时间被处理的元素的队列延迟队列就是想要消息延迟一段时间后被处理,TTL可以让消息在延迟一段时间后变成死信。变成死信的消息都会被投递到死信队列中,这样的话,只要消费者一直消费死信队列里面的消息就可以了,因为里面的消息都是希望被马上处理的消息。原创 2022-10-17 13:29:17 · 2397 阅读 · 5 评论 -
RabbitMQ:死信队列
队列中不能被消费的消息称为死信队列有时候因为特殊原因,可能导致队列中的某些信息无法被消费,而队列中这些不能被消费的消息在后期没有进行处理,就会变成死信队列,死信队列中的消息称为死信。应用场景:未来保证订单业务的消息数据不丢失,我们需要使用到RabbitMQ的死信队列机制,当消息消费发生异常的时候,我们就把消息投入到死信队列中,比如说用户买东西,下单成功后去支付,但是没有在指定时间支付的时候就会自动失效。死信队列,英文缩写:DLX。原创 2022-10-12 14:57:11 · 8504 阅读 · 77 评论 -
RabbitMQ:发布确认模式
生产者把信道设置成为confirm(确认)模式,一旦信道进入confirm模式,所有在这个信道上面发布的消息都会被指定唯一的一个ID(ID从1开始).一旦消息被投递到所有匹配的队列以后,broker就会发送一个确认给生产者(包含ID),这样使得生产者知道消息已经正确到底目的队列了。如果消息和队列是可持久化的,那么确认消息就会在消息被写入磁盘以后发出,broker回传给生产者的确认消息中delivery-tag包含了确认消息的序列号。原创 2022-10-09 15:00:48 · 2341 阅读 · 7 评论 -
RabbitMQ:Topics主题/通配符模式
Topic类型与Direct相比,都是可以根据RoutingKey把消息路由到不同的队列。只不过Topic类型Exchange可以让队列在绑定Routing key 的时候使用通配符Routingkey 一般都是有一个或多个单词组成,多个单词之间以”.”分割,例如: item.insert通配符规则:#:匹配0个或者多个词*:刚好可以匹配一个词。原创 2022-10-07 22:46:48 · 1601 阅读 · 3 评论 -
RabbitMQ:路由模式
在路由工作模式中,我们需要配置一个类型为direct的交换机,并且需要指定不同的路由键(routing key),把对应的消息从交换机路由到不同的消息队列进行存储,由消费者进行消费。P:生产者,向交换机发送消息的时候,会指定一个routing keyX:Exchange(交换机),接收生产者的消息,然后把消息传递给和routing key完全匹配的队列C1:消费者,它所在队列指定了需要routing key为error的信息。原创 2022-10-06 15:24:19 · 4040 阅读 · 7 评论 -
RabbitMQ:发布订阅模式
P:生产者,发送消息给交换机C:消费者,接收消息X:交换机,一方面接收生产者发送的消息,另一方面知道怎么处理消息,是否应将其附加到特定队列?是否应将其附加到多个队列中?或者它应该被丢弃。其规则由交换类型定义。Queue:消息队列,接收消息,缓存消息每个消费者都监听自己的队列生产者把消息发送给broker,然后交换机把消息转发到绑定此交换机的每个队列,每个绑定交换机的队列都将接收到消息。原创 2022-10-06 14:39:22 · 3747 阅读 · 1 评论 -
RabbitMQ:工作队列模式
任务队列)背后的主要思想是避免立即执行资源密集型任务并等待其完成。相反,我们将任务安排在以后完成。我们将_任务_封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当您运行多个工作线程时,任务将在它们之间共享。这个概念在 Web 应用程序中特别有用,因为在 Web 应用程序中,不可能在较短的 HTTP 请求窗口中处理复杂的任务。原创 2022-10-03 14:43:24 · 3952 阅读 · 53 评论 -
RabbitMQ:简单模式(Hello World)
先来看看RabbitMQ架构图Broker:接收和分发消息的应用, RabbitMQ Server 就是 Message Broker: 出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似 于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出 多个 vhost ,每个用户在自己的 vhost 创建 exchange / queue 等Connection。原创 2022-10-01 15:24:25 · 906 阅读 · 1 评论 -
Spring整合RabbitMQ
RunWith注解的作用:让测试在spring容器环境下执行,如果测试类没有这个注解,会导致service,dao等注入失败。在resources目录下面创建rabbitmq.properties属性配置文件。在resources目录下面创建rabbitmq.properties属性配置文件。原创 2022-09-27 15:19:59 · 1217 阅读 · 6 评论 -
RabbitMQ工作模式
多个消费者共同消费同一个队列中的消息,可以实现快速消费,避免消息积压,但是多个消费者消费队列的消息的时候,是互斥的,同一个消息只能被一个消费者消费,不可以被多个消费者消费。应用:对于一些任务比较多的情况,使用工作队列可以提高任务处理的速度P:生产者,向交换机发送消息的时候,会指定一个routing keyX:Exchange(交换机),接收生产者的消息,然后把消息传递给和routing key完全匹配的队列C1:消费者,它所在队列指定了需要routing key为error的信息。原创 2022-09-26 15:18:27 · 1626 阅读 · 3 评论 -
rabbitmq入门
✨ rabbitmq入门1.工程搭建1.1步骤分析1.2创建工程1.3添加依赖2.编写生产者3.编写消费者4.入门案例总结5.AMQP5.1基本介绍5.2rabbitmq运转流程📃个人主页:不断前进的皮卡丘🌞博客描述:梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记🔥个人专栏:消息中间件专栏1.工程搭建1.1步骤分析官网https://www.rabbitmq.com/tutorials/tutorial-one-java.html需求:使用简单原创 2022-09-25 19:18:43 · 852 阅读 · 0 评论 -
rabbitmq安装
(根据自身需求及匹配关系,下载对应rpm包)rabbitmq-server-3.8.1-1.el7.noarch.rpm。链接:https://pan.baidu.com/s/1S31oVSB-ki_FjQZinsIvjw?可以采用yum安装方式:yum install socat,我们这里采用rpm安装方式。rabbitmq安装依赖于socat,所以需要下载socat。在安装rabbitmq之前需要先安装socat,否则,报错。(根据自身需求及匹配关系,下载对应rpm包)原创 2022-09-25 11:32:24 · 613 阅读 · 1 评论 -
消息中间件概述
MQ(Message Queue),消息队列(MQ)是一种应用程序对应用程序的通信方法消息队列是一种先进先出的数据结构消息传递:指的是程序直接通过消息发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是拥有远程调用的技术不同进程之间传递消息的时候,两个进程之间耦合度过高,一个进程的改变就会引发另外一个进程的改变。为了让它们不会互相干扰,我们需要在两个进程之间抽离出一个模块,两个进程之间传递的消息通过消息队列来传递。单独修改某一个进程不会影响另外一个。原创 2022-09-24 14:38:51 · 1061 阅读 · 0 评论