Инициализация проекта

Настоятельно рекомендую использовать Gradle в проектах, где предполагается взаимодействие с сервисом арен.

Добавление зависимости в проект:

  1. Добавление репозитория:

repositories {
    maven("https://repo.starfarm.fun/private") {
        credentials {
            username = System.getenv("SF_REPO_USER")
            password = System.getenv("SF_REPO_PASSWORD")
        }
    }
}
  1. Добавление зависимости:

dependencies {
    implementation("ru.starfarm:arena-service:1.4")
}
  1. Добавление плагина ShadowJar:

plugins {
    id("com.github.johnrengelman.shadow") version "8.1.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