Spring Boot 集成 Spock

上一篇 Spock 入门 介绍了 Spock 基础概念。本篇主要介绍 Spring Boot 使用 Gradle 集成 Spock。 环境: java11 gradle-6.6.1 build.gradle 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 plugins { id 'org.

Spock 入门

之前写单测都是用 Junit,稍微复杂点逻辑,写起来不免很繁琐。用了 Spock 后,发现单测可以如此顺滑。 在实际应用中,需要理解 Spock 阶段和块的概念。 如图: 阶段 Setup 初始化 Stimulus 刺激 Response 响应 Cleanup 清理资源 块 Given 块 准备或定义待测试的数据或对象。 1 2 3 given: def stack = new Stack() def elem = "push me" When 和 Then 块 when 和 then 块始终一起出现。他们描述了刺激和预期的反应。

Spring Boot 集成 H2 数据库

配置文件 本文介绍 Spring Boot 集成 H2 数据库基础配置。 application-h2.yml 1 2 3 4 5 6 7 8 9 10 11 spring:datasource:url:jdbc:h2:mem:testusername:sapassword:sadriver-class-name:org.h2.Driverschema:classpath:db/schema.sql# 表结构data:classpath:db/data.sql# 预先准备数据h2:console:enabled:true 数据表 项目路径:resources/db 表结构:schema.sql 1 2 3 4 5 6 7 8 9 10 DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id) ); data.

Nexus 部署

本文介绍使用 Nexus 部署,完成 Maven 私有仓库的搭建。 Nexus Docker 镜像:https://hub.docker.com/r/sonatype/nexus3 默认方式启动 Nexus Nexus 使用 Docker 方式部署灰常简单,一行命令即可。 1 docker run -d -p 8081:8081 --name nexus sonatype/nexus3 持久化数据 默认方式启动,数据在容器中,容器删除,数据也就没有了,我们需要将数据持久化。 这里挂载到宿主机 /data/nexus-data下, 注意目录权限。 1 2 3 cd /data mkdir nexus-data chown 200 nexus-data 1 docker run -d -p 8081:8081 --name nexus -v /data/nexus-data:/nexus-data sonatype/nexus3 Nexus 用户角色查看 1 2 3 4 5 [root@mangobeta.

理解 Kafka

本文记录笔者在学习 Kafka 过程中,对 Kafka 概念理解和问题整理。 假设我们需要一个任务队列,用于处理异步任务,它大概长这样。 典型的先进先出(FIFO)队列,一个生产者,一个消费者,数据消费完即移除队列。 理想情况下,生产和消费能力相当,这样一个队列就满足需求了。但是现实往往不那么理想。 这样的设计有几个问题: 消费能力跟不上生产,队列会不会变得很庞大。 第一次消费失败,没有尝试机制。 单消费者。 数据持久性问题。 实际业务处理时,以上问题都需要解决,这里还没有考虑到分布式,数据副本等情形。 基于以上的思考,我们看下 Kafka 怎么解决了这些问题。 Kafka 架构图: 如图所示,Kafka 支持多生产者,多Topic(主题,相当于一个独立队列),多消费者。 一些基本概念: Producer 即生产者 Topic 主题,可以理解为消息队列 Partition 为 Topic 的分区,Kafka 消息的存储是按 Partion 为单位的。一个 Topic 可以指定一个或多个分区,当指定一个时就变成我们最上面设想的队列。 Broker 代理,消费者所消费的实例。 Kafka 数据时序性问题 Kafka Topic 数据存储时会(平均)存储在 Partition上。如图所示: