12 2023 档案
该文被密码保护。
该文被密码保护。
该文被密码保护。
摘要:ES官方提供了各种不同语言的客户端用来操作ES。这些客户端的本质就是组装DSL语句,通过http请求发送给ES RestClient 是Java操作ES的客户端 RestClient 客户端的作用是帮助我们组装DSL语句,然后通过http请求发给ES
阅读全文
摘要:ES中,索引库就相当于MySql的表;索引库里面有很多的文档,相当于MySql表里面一行一行的数据。 我们知道,MySql数据库要先创建表 才能去添加数据;ES也一样,要先有了索引库,才能往索引库里边添加文档 要想创建一个索引库,就像建表一样:建表语句里是要指定字段的一些约束的,例如id、store
阅读全文
摘要:ES 是 elasticsearch 的简称,elasticsearch 是一款非常强大的开源分布式搜索引擎,可以帮助我们从海量数据中快速找到需要的内容。 elasticsearch 的底层实现 是一个名为 Lucene 的技术。而 Lucene 中的核心技术就是倒排索引 Lucene 的优势:易扩
阅读全文
摘要:步骤: 1. 把资料中的 rabbitmq_delayed_message_exchange-3.9.0.ez 复制到docker的mq容器的插件目录 2. 执行命令 docker exec -it mq rabbitmq-plugins enable rabbitmq_delayed_messag
阅读全文
摘要:生产者给MQ发送 带过期时间的消息: @GetMapping("/mq07")public void sendTTLMessage(){ //第四个参数:后置消息处理器。用后置消息处理器给消息加过期时间 rabbitTemplate.convertAndSend("simple.direct", "
阅读全文
摘要:如何保证业务是幂等的? 方案一: 生产者、消费者都配置上 setCreateMessageIds(true)。配好后,生产者给MQ发消息,消息就会带上自动生成的 id。将来消费者拿到消息后,就可以获取到 id,把 id保存起来 做唯一匹配 代码示例: package com.itheima;impo
阅读全文
摘要:效果: 消费者抛异常后,会本地重试,如果本地重试次数达到最大重试次数之后,直接给队列返回reject,队列收到后就会丢弃该消息,也就是策略的第一种 但就这样把删了不太好 第二种 ImmediateRequeueMessageRecoverer:消费者抛异常后,会本地重试,如果本地重试次数达到最大重试
阅读全文
摘要:因此,之前我们见到的 队列把消息传递给消费者后,队列就自动删除该消息,因为默认就是 acknowledge-mode: none 代码示例: 在消费者的 appplication.yml 文件中加入配置(默认是none,需要设置为auto): spring: rabbitmq: listener:
阅读全文
摘要:RabbitMQ 实现数据持久化包括三个方面:交换机持久化、队列持久化、消息持久化
阅读全文
摘要:原理: 生产者确认更加注重 消息发送失败时该怎么办 消息发送失败 采用的是确认机制(有两种确认机制:Publisher Confirm 和 Publisher Return) 交换机找不到生产者传递过来的那个RoutingKey的队列,交换机就会路由失败,也就是上面第一种情况 交换机路由失败情况就是
阅读全文
摘要:我们配置的这个失败后的重连机制仅仅是发送者连接MQ失败 的 连接失败重试,如果消息发送抛出异常时不会重试,因为它只是连接失败的重试,不是消息发送的重试 spring: rabbitmq: host: 192.168.88.130 port: 5672 virtual-host: /hmall use
阅读全文
摘要:代码示例: 1. 引入依赖 <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId></dependency> 2. 在启动类中创建Bean package
阅读全文
摘要:代码示例:创建一个Direct交换机,与两个队列绑定(direct.queue1、direct.queue2) 既是消费者,又可以创建交换机和队列,以及交换机与队列的 RoutingKey @RabbitListener(bindings = @QueueBinding( value = @Queu
阅读全文
摘要:交换机和队列的声明一般写在消费者模块里 代码示例: package com.itheima.config_RabbitMQ;import org.springframework.amqp.core.*;import org.springframework.context.annotation.Bea
阅读全文
摘要:Direct 交换机:RoutingKey只能写完整的key 而 Topic 交换机:可以写成通配符
阅读全文
摘要:代码示例: 1. 新建两个队列 2. 创建交换机,名字叫 hmall.topic,类型选择 topic 3. hmall.topic 交换机绑定第一步的两个队列,绑定过程中填写 RoutingKey 4. 编写消费者代码监听这两个队列 @RabbitListener(queues = "topic.
阅读全文
摘要:代码示例: 1. 交换机绑定了两个队列,并给它们设置了RoutingKey 2. publisher 发送者给 Direct 交换机发消息时,第二个参数指定 RoutingKey: @GetMapping("/mq03")public void mq03(){ String exchangeName
阅读全文
摘要:发送消息到交换机的代码: @GetMapping("/mq02")//发送消息给交换机public void mq02(){ String exchangeName = "hmall.fanout"; String msg = "hello, 每个人"; //三个参数:交换机名称、RoutingKe
阅读全文
摘要:容易搞混的点: 1. 假如 publisher 给Fanout交换机发送了一条消息,那么Fanout交换机会给每一个绑定到它身上的队列都发送这条消息,也就是说有多少个队列跟它绑定了,这条消息就有几份,每个队列都收到一份。 2. 假如一个队列绑定了多个消费者,那么该队列在给消费者投递消息时就是轮询,一
阅读全文
摘要:默认情况下,MQ队列如果绑定了多个消费者,那么队列在投递消息时就是轮询,一人投递一个(并且一条消息只能投递给监听该队列的某一个消费者) 在一个MQ队列上绑定多个消费者的目的是加快队列中消息的处理效率,防止队列中消息的堆积问题。 注:要在消费者的 application.yml 文件中加上这个配置
阅读全文
摘要:代码示例: 注:要把这个类加上Component注解 package com.itheima.amqp_listener;import org.springframework.amqp.rabbit.annotation.RabbitListener;import org.springframewo
阅读全文
摘要:1. 导包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId></dependency> 2.在 application.yml 文件里编
阅读全文
摘要:消息发送 先到达交换机,交换机把消息路由到队列,消费者监听队列 交换机只负责路由和转发消息,没有存储消息的能力
阅读全文