自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RabbitMQ (八) 发布确认高级

在生产环境中由于一些不明原因,导致 rabbitmq 重启,在 RabbitMQ 重启期间生产者消息投递失败,导致消息丢失,需要手动处理和恢复。于是,我们开始思考,如何才能进行 RabbitMQ 的消息可靠投递呢?

2023-07-13 18:54:56 90 1

原创 RabbitMQ (七) 延迟队列

延时队列在需要延时处理的场景下非常有用,使用 RabbitMQ 来实现延时队列可以很好的利用 RabbitMQ 的特性,如:消息可靠发送、消息可靠投递、死信队列来保障消息至少被消费一次以及未被正确处理的消息不会被丢弃。另外,通过 RabbitMQ 集群的特性,可以很好的解决单点故障问题,不会因为单个节点挂掉导致延时队列不可用或者消息丢失。

2023-06-21 08:55:26 171

原创 RabbitMQ (六)死信队列

应用场景:为了保证订单业务的消息数据不丢失,需要使用到 RabbitMQ 的死信队列机制,当消息消费发生异常时,将消息投入死信队列中.还有比如说: 用户在商城下单成功并点击去支付后在指定时间未支付时自动失效。先从概念解释上搞清楚这个定义,死信,顾名思义就是无法被消费的消息,字面意思可以这样理解,一般来说,producer 将消息投递到 broker 或者直接到queue 里了,consumer 从 queue 取出消息进行消费,但某些时候由于特定的。3. C2 消费者代码不变(启动 C2 消费者)

2023-06-19 18:21:28 95

原创 RabbitMQ(五)交换机

Fanout 这种类型非常简单。正如从名称中猜到的那样,它是将接收到的所有消息广播到它知道的所有队列中。系统中默认有些 exchange 类型上一节中的我们的日志系统将所有消息广播给所有消费者,对此我们想做一些改变,例如我们希 望将日志消息写入磁盘的程序仅接收严重错误(errros),而不存储哪些警告(warning)或信息(info)日志消息避免浪费磁盘空间。

2023-06-12 19:34:24 119

原创 Sql Server DATEPART()函数

例如,`DATEPART(day, '2022-08-15')`将返回15,因为'2022-08-15'是星期六。DATEPART()函数是SQL Server中的一个日期函数,用于返回指定日期时间的指定日期部分的整数。DATEPART(month, 日期字段) = MONTH(GETDATE()) AND。WHERE DATEPART(year, 日期字段) = YEAR(GETDATE()) AND。DATEPART(day, 日期字段) = DAY(GETDATE())

2023-06-10 16:46:34 1744

原创 RabbitMQ(四)发布确认

(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker 就会发送一个确认给生产者(包含消息的唯一 ID),这就使得生产者知道消息已经正确到达目的队列了,如果消息和队列是可持久化的,那么确认消息会在将消息写入磁盘之后发出,broker 回传给生产者的确认消息中delivery-tag 域包含了确认消息的序列号,此外 broker 也可以设置basic.ack 的multiple 域,表示到这个序列号之前的所有消息都已经得到了处理。当然这种方案仍然是同步的,也一样阻塞消息的发布。

2023-06-09 10:59:39 53

原创 RabbitMQ(三)Work Queues

工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务。

2023-05-31 14:08:12 85 1

原创 SQL Server中快速复制表结构

该语句将原表中的所有列复制到名为table_copy的新表中,其中where 1 = 0决定了新表中不会包含任何原表中的记录。

2023-05-31 11:32:28 630 1

原创 RabbitMQ(二)Hello World

我们将用 Java 编写两个程序。发送单个消息的生产者和接收消息并打印出来的消费者。我们将介绍 Java API 中的一些细节。在下图中,“ P”是我们的生产者,“ C”是我们的消费者。中间的框是一个队列-RabbitMQ 代 表使用者保留的消息缓冲区。

2023-05-24 21:52:04 48 1

转载 分布式系统唯一ID生成方案汇总

系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,也常常为这个问题而纠结。生成ID的方法有很多,适应不同的场景、需求以及性能要求。所以有些比较复杂的系统会有多个ID生成的策略。下面就介绍一些常见的ID生成策略。最常见的方式。利用数据库,全数据库唯一。优点:1)简单,代码方便,性能可以接受。2)数字ID天然排序,对分页或者需要排序的结果很有帮助。缺点:1)不同数据库语法和实现不同,数据库迁移的时候或多数据库版本支持的时候需要处理。

2023-05-21 16:14:01 285 1

原创 RabbitMQ(一)消息队列

Broker:接收和分发消息的应用,RabbitMQ Server 就是 Message Broker:出于多租户和安全因素设计的,把 AMQP 的基本组件划分到一个虚拟的分组中,类似于网络中的 namespace 概念。当多个不同的用户使用同一个 RabbitMQ server 提供的服务时,可以划分出多个 vhost,每个用户在自己的 vhost 创建 exchange/queue 等Connection:publisher/consumer 和 broker 之间的 TCP 连接Channel。

2023-05-20 21:29:31 67

原创 Java10&11的新特性

你不需要担心变量名或方法名会与var发生冲突,因为var实际上并不是一个关键字,而是一个类型名,只有在编译器需要直到类型的地方才需要用到它。除此之外,它就是一个普通合法的标识符。也就是说,除了不能用它作为类名,其他的都可以。首先我要说明的是,var并不会改变Java是一门静态类型语言的事实。编译器负责推断出类型。并把结果写入字节码文件,就好像是开发人员自己敲入类型一样。在处理var时,编译器先是查看表达式右边部分,并根据右边变量值的类型进行推断,作为左边变量的类型,然后将该类型写入到字节码当中。

2023-05-19 08:15:00 126 1

原创 Java9的新特性

在Java 9中,接口也可以具有私有方法。除了Java 8中的静态方法和默认方法外,这是另一个重大更改,因为它允许接口内部重新使用通用代码。在一个接口中,有可能在多个导致代码重复的默认方法上编写通用代码。私有方法的引入避免了此代码重复。接口中私有方法的优点避免代码重复。

2023-05-18 20:28:30 328 1

原创 Java8的其他新特性

Java8新特性

2023-05-17 21:40:43 37 1

原创 Swagger

Swagger是个优秀的工具,现在国内已经有很多的中小型互联网公司都在使用它,相较于传统的要先出Word接口文档再测试的方式,显然这样也更符合现在的快速迭代开发行情。相较于传统的Postman或Curl方式测试接口,使用swagger简直就是傻瓜式操作,不需要额外说明文档(写得好本身就是文档)而且更不容易出错,只需要录入数据然后点击Execute,如果再配合自动化框架,可以说基本就不需要人为操作了。这样的话,可以给一些比较难理解的属性或者接口,增加一些配置信息,让人更容易阅读!3、如何配置多个分组?

2023-05-16 08:59:49 67

原创 增加字段流水号自增

【代码】增加字段流水号自增。

2023-05-15 09:54:24 95 1

空空如也

空空如也

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

TA关注的人

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