本节主要是将Conductor进行启动,观察基本项目的基本能力。
Conductor 后端的编译启动
Conductor是基于17开发的(代码中展示11可运行),依赖管理是通过Gradle完成的,要对项目进行编译通过,至少要满足环境如下:
- jdk >=11
- Gradle < 8 (经过实践发现,8版本以后,Gradle的某些API取消了,所以需要保证小于8)
本地环境使用的是:
- jdk 11
- Gradle 7.6.4
Java和Gradle环境的安装,比较简单,诸神可以自行搜索
基础环境安装完成后,对idea进行Gradle配置:setting->gradle
依赖环境
Conductor 的启动需要依赖很多中间件,需要一次安装相关环境。在本地调试,直接安装可能会污染开发环境,本地通过容器(Docker)直接启动,更加合理,用完即回收。至于容器的使用,不进行过多介绍,可以自行询问网友。
中间件的安装,本地直接通过docker-compose 进行启动
Redis
version: '3.3'
services:
redis:
image: redis:latest
restart: always
hostname: redis
container_name: redis
privileged: true
ports:
- 6379:6379
直接使用最新版启动,端口和本地的6379进行映射
Elasticsearch
官方对es默认提供了对es6版本的支持,直接启动es6。为了方便查看和管理,直接启动kibana+es。compose 文件如下:
version: '3.9'
services:
elasticsearch:
image: elasticsearch:6.8.16
container_name: elasticsearch
privileged: true
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx1096m" #设置使用jvm内存大小
- bootstrap.memory_lock=true
volumes:
- ./es/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
- ./es/data:/usr/share/elasticsearch/data:rw #数据文件挂载
- ./es/logs:/user/share/elasticsearch/logs:rw
ports:
- 9200:9200
- 9300:9300
networks:
- default
- es
deploy:
resources:
limits:
cpus: "2"
memory: 1000M
reservations:
memory: 200M
kibana:
image: kibana:6.8.16
container_name: kibana
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
environment:
ELASTICSEARCH_HOSTS: http://elasticsearch:9200 #设置访问elasticsearch的地址
I18N_LOCALE: zh-CN
ports:
- 5601:5601
networks:
- default
- es
networks:
es:
driver: bridge
Cassandra
同样通过容器启动
version: "3.8"
services:
cassandra:
image: cassandra:latest # 4.1
container_name: cassandra
ports:
- 9042:9042
启动后端
java.lang.NoClassDefFoundError: com/netflix/conductor/common/run/WorkflowTestRequest
这个类在项目中是存在的,至于为什么会报找不到 ,应该还是依赖有问题;对于Gradle没那么熟,调整的话,可能成本比较高,选择直接禁用测试。在build.gradle
中增加
test{
enabled(false)
}