自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 RabbitMQ基础及同步通信&异步通信

而现在支付服务向broker发布事件,这个时候支付服务就可以立即结束告诉用户支付成功了(后续的订饭服务、仓储服务、短信服务和支付服务是没有关系的),后续的服务由Broker去通知他们完成,而他们什么时候完成,耗时多久和支付服务并没有任何的关系,只能能做完就行。而如果说不需要对方的结果,只是希望对方能干一件事情,对吞吐量的要求、并发的要求较高,还希望解除服务间的耦合关系,那此时应该使用异步通信。因为之前我们支付服务要调取订单服务、仓储服务、短信服务等,每个服务都有一定的耗时,总耗时就是四个服务的耗时之和;

2025-04-10 21:48:38 297

原创 分布式事务

TM提交、回滚全局事务,TC检查分支事务状态,TC提交/回滚RM,一阶段都成功,则提交,删除undo-log,一阶段有失败,则回滚,恢复undo-log日志,删除undo-log。RM (Resource Manager):资源管理器:管理分支事务处理的资源,与TC交谈以注册分支事务和报告分支事务的状态,并驱动分支事务提交或回滚。TM开启全局事务,调用分支RM,RM向TC注册分支事务,RM执行业务sql并提交记录undo-log(数据快照),RM向TC报告事务状态。:因为网络是不可靠的。

2023-09-26 08:38:14 87

原创 Elasticsearch

query(QueryBuilders.multiMatchQuery("上海", "name", "city", "business"));searchRequest.source().query(QueryBuilders.termQuery("brand", "汉庭"));//-------------------------------------索引操作--------------------------.query(QueryBuilders.matchQuery("all","如家"))

2023-09-18 23:16:31 114

原创 消息队列后台管理和Elasticsearch的实时更新

throw new InvalidParameterException("id不能为空");log.warn("创建Es的Rest客户端");技术栈:RabbitMQ、Elasticsearch。* 新增同步数据到ES。* 更新数据同步到ES。* 删除数据同步到ES。//MybatisPlus接口。

2023-09-18 23:10:04 189

原创 Elasticsearch

4.mysql中的schema-------》Elasticsearch中的mapping,索引中文档的约束,例如字段类型约束。5.mysql中的sql-------》Elasticsearch中的dsl,提供json风格的请求语句,实现crud。2.mysql中的row-------》Elasticsearch中的document,文档内容都是json格式。3.mysql中的column------》Elasticsearch中的field,json文档中的字段。还能搜索到手机相关的品牌数据等。

2023-09-15 19:55:39 79 1

原创 DelayExchange插件

log.info("延时队列delay.queue收到的消息: {}", message);3.如果有x-delay属性,说明是延迟消息,持久化到硬盘,读取x-delay值,作为延迟时间。4.x-delay时间到期后,重新投递消息到指定队列。log.warn("消息发送成功了");2.判断消息是否具备x-delay属性。* 测试延时队列 : 插件。//订单超时未支付处理代码。

2023-09-14 17:56:38 95

原创 死信交换机延时队列

deadLetterRoutingKey("ttl") //把死信投递到死信交换机的路由key。.deadLetterExchange("dl.ttl.direct") //死信交换机名称。log.info("死信队列 dl.ttl.queue收到的消息:{}", message);//这个队列无人消费,并且超过时间,消息才会变成死信,路由死。//声明普通队列投递到死信交换机、交换机、绑定关系。//----------------死信队列。//消息所在的队列设置了超时时间。

2023-09-14 17:30:35 71

原创 RabbitMQ消费者ack

none:只要消息到达消费者,即使消费者宕机了,Spring依然直接返回ack到MQ,确认签收;MQ收到ack,会把队列中的消息删除,消息会丢失。multiplier: 2 #失败的等待时长倍数,下次等待时长 = multiplier * last-interval。log.info("direct.queue1收到的消息:{}", message);//失败策略:重试次数耗尽后,会把消息投递到错误的队列,由错误队列去消费。//手动ack,让消息重回队列,参数三表示是否重回队列。

2023-09-14 16:08:13 227

原创 RabbitMQ消息持久化

MessageProperties messageProperties = new MessageProperties();messageProperties.setDeliveryMode(MessageProperties.DEFAULT_DELIVERY_MODE);messageProperties.setMessageId("messageId");Message message = new Message("hello666".getBytes(StandardCharsets.UTF

2023-09-14 14:39:29 119

原创 RabbitMQ保证消息不丢失生产者确认机制

log.error("发送消息出问题了:" + ex.getMessage() + " --- " + correlationData.getId());log.warn("666---> 消息正确到达交换机:" + correlationData.getId());log.info("消息发送失败,应答码{},原因{},交换机{},路由键{},消息{}",log.info("发送失败,重新发送消息--->222");//消息发送失败回调的方法,一个消息对应一个。// 投递失败,记录日志。

2023-09-14 12:16:38 157

原创 AMQP创建交换机和队列的两种方式

System.out.println("itheima.fanout.queue1收到的消息:"+message);System.out.println("收到的消息fan1:"+message);System.out.println("收到的消息fan2:"+message);//队列fanoutQueue1绑定交换机itcastFanout。//队列fanoutQueue2绑定交换机itcastFanout。//Fanout交换机。直接创建交换机和队列以及监听。

2023-09-14 11:43:54 130

原创 RabbitMQ初始代码

System.out.println("消息内容:" + new String(body));* @param autoDelete 是否自动删除。* @param arguments 队列其他参数。* exchange 交换机,默认的交换机是""* @param exclusive 是否排它。* byte[] body 消息内容。* @param durable 是否持久化。* @param queue 队列名称。//3.声明交换机与队列。* body 消息内容。//3.声明交换机与队列。

2023-09-14 11:41:15 54

原创 主流消息中间件

2.RabbitMQ协议支持AMQP,消息可靠性高,单机吞吐量一般,几千几万。3.RocketMQ阿里,向外开发的功能存在局限。4.Kafka单节点的吞吐量高,消息可靠性不高。1.ActiveMQ几乎过时了。

2023-09-14 08:53:58 55

原创 AMQP五种模式

一般都是有一个或多个单词组成,多个单词之间以”.”分割,例如: item.insert。通过交换机,通过路由key的精确名称把消息路由到队列,实现群发。通过交换机,通过路由key的部分名称把消息路由到队列,实现群发。通过交换机,把消息路由到队列,实现群发。路由key【Routingkey】多个消费者之间是竞争关系。一个生产者,一个消费者。一个生产者,多个消息者。一个生产者,多个消息者。一个生产者,多个消息者。#:匹配一个或多个字符。

2023-09-14 08:30:49 64

原创 HashMap

如果链表长度超过1,会通过高低算法,把老数组下标对应的链表进行拆分,一半放新数组对应老数组原下标的位置,另一半放新数组下标【老数组下标+老数组长度】8.如果hash值相等,则比较equals方法,如果相等,则覆盖value值,但是key还是原来的。7.如果该位置不为null,先依次比较该位置下的链表元素的hash值是否相等,如果不相等直接存入。// 2、遍历全部的键,根据键获取其对应的值。3.当数组的长度到达12的时候,数组自动扩容为原来长度的2倍。// 根据键获取对应的值。

2023-09-10 18:51:31 57

原创 分布式、微服务、SpringCloud

服务发现:负载均衡,使用Ribbon组件,通过一个 LoadBalancerInterceptor,通过服务名获取到服务列表,再通过负载均衡策略 选择一台真正服务 器,进行选择调用,由IRule接口来指定负载策略;​ 集群:优先访问指定集群,如果指定集群不能使用,则可访问其他集群,可以通过nacos配置集群权重 ​ 环境隔离:只有在同一个命名空间及同组中的微服务才能正常调用服务 ​ 配置中心:bootstrap.yml的优先级要高于application.yml;单一职责:拆分后的服务对应唯一的业务能力;

2023-09-08 22:54:14 55

原创 RestTemplate的使用

/方式三:restTemplate.exchange(url, HttpMethod.GET, userHttpEntity, User.class)//方式一:restTemplate.getForObject(url, User.class)//方式二:restTemplate.getForEntity(url, User.class)//exchange:最完整的API,可以传递请求实体,请求头......//获取用户id查询用户。

2023-09-06 21:19:06 56

原创 mybatisplus相关配置和使用

依赖spring:​​# 开启mp的日志(输出到控制台)​db-config:#全局设置实体类主键设置方式#全局设置表名。

2023-09-05 21:49:04 139 1

原创 Linux常用命令

ip addr 查看ippwd 查看当前目录shutdown -h now 立即关机reboot 重启ping ip或域名 查看网络是否OKctrl+c 强制结束占用窗口的命令top 查看内存情况top -p pid 查看进程内存情况kill -9 pid 强制杀死指定进程ps -ef | grep -i pid/进程名字 查看进程运行信息(|管道命令)clear 清屏history 查看历史命令!历史命令编号 执行历史命令具体命令 -h 查看具体命令的帮助信息。

2023-09-03 21:22:54 45

原创 小程序端微信支付流程

编写支付请求代码:通过在Java代码中引入支付SDK,使用微信支付API实现支付功能。注册微信支付商户账号:在微信支付商户平台(pay.weixin.qq.com)上注册并登录,完成商户信息的填写和审核。小程序支付接入:在小程序开发中引入微信支付相关的API,编写支付相关逻辑。调用统一下单API生成预支付订单,前端页面调用支付API调起支付。接入模式选择:微信支付支持多种接入模式,如APP支付、H5支付、小程序支付等。配置支付回调接口:在Java应用中,编写处理微信支付回调的接口。

2023-09-02 21:44:27 138

原创 springboot如何实现约定大于配置

各个框架主动提供一套默认的配置给springboot springboot会自动扫描相关包下的相关文件,找到后,如果需要加载到IOC容器中,就加载进去 springboot默认从所有依赖的meta-inf目录下找到两个约定的文件 springboot找到文件中所有的配置类,当满足条件时,把配置类中的对象放入IOC容器中 @SpringBootConfiguration相当于@Configuraiton,表示这是个配置类 @EnableAutoConfiguration找到meta-inf/spri

2023-08-29 21:48:14 164 1

原创 Spring Task(任务调度工具)

任务调度工具

2023-08-28 21:13:07 72 1

原创 日志注解使用

日志注解使用

2023-08-27 21:39:00 40 1

原创 http模拟浏览器向服务器请求

http模拟浏览器向服务器请求

2023-08-25 07:13:41 426 1

原创 Spring全局异常处理器(controller)

Spring全局异常处理器(controller)

2023-08-23 20:43:23 67

原创 基于AOP思想的动态代理

基于AOP思想的动态代理

2023-08-21 23:12:35 43 1

原创 springIOC的mapper接口可以不用写@Respository

springIOC的mapper

2023-08-21 11:59:29 52 1

原创 springboot的日期消息转换器

springboot的日期消息转换器

2023-08-20 21:43:22 49 1

原创 springAOP和事务的特殊场景问题

springAOP和事务的特殊场景问题

2023-08-18 23:56:29 27 1

原创 常用的子父类判断

子父类判断

2023-08-18 23:51:14 32 1

原创 IOC整合mybatis和mysql图解

IOC整合mybatis和mysql图解

2023-08-18 23:49:23 35 1

原创 ThreadLocal动态获取登录用户的ID

ThreadLocal

2023-08-18 19:22:01 260 1

原创 springboot日志切面

springboot日志切面

2023-08-16 21:45:52 319 1

原创 windows常用快捷键

ctrl + N新打开一份文件夹alt + tab切换窗口任务管理器alt + F4关闭当前窗口。

2023-08-14 23:47:18 52

原创 typora常用快捷键

引用代码块无序列表有序列表。

2023-08-14 23:40:00 54

原创 idea常用快捷键

idea快捷键

2023-08-14 23:30:51 80

原创 git的常用命令

git config。

2023-08-14 21:12:36 86 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除