Инициализация проекта
Настоятельно рекомендую использовать Gradle в проектах, где предполагается взаимодействие с сервисом арен.
Добавление зависимости в проект:
Добавление репозитория:
repositories {
maven("https://repo.starfarm.fun/private") {
credentials {
username = System.getenv("SF_REPO_USER")
password = System.getenv("SF_REPO_PASSWORD")
}
}
}
Добавление зависимости:
dependencies {
implementation("ru.starfarm:arena-service:1.4")
}
Добавление плагина ShadowJar:
plugins {
id("com.github.johnrengelman.shadow") version "8.1.1"
}
Конфигурация сборки проекта:
tasks {
compileJava {
options.encoding = Charsets.UTF_8.name()
}
shadowJar {
relocate("io.netty", "libs.io.netty")
relocate("com.google.common", "libs.com.google.common")
relocate("com.google.protobuf", "libs.com.google.protobuf")
mergeServiceFiles()
}
jar {
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
dependsOn(shadowJar)
}
}
Крайне важно использовать релокацию и слияние сервисных файлов в ShadowJar, чтобы избежать конфликтов версий библиотек!
Инициализация сервиса в проекте
Весь API данного сервиса представлен в классе ArenaService. При создании экземпляра данного класса адрес сервиса будет автоматически взят из переменных среды ARENA_SERVICE_HOST
и ARENA_SERVICE_PORT
.
Рекомендую использовать 1 экземпляр данного класса во всём проект, так как при создании нового экземпляра выделяет 1 отдельный поток для обработки запросов, что означает, что при создании множества экземпляров данного класса вы придёте к излишнему потреблению ресурса времени.
Last updated