Skip to content
A networking framework that evolves with your application
Java Other
  1. Java 99.4%
  2. Other 0.6%
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
buildSrc Fix typo in `inheritRepositoriesFromBuildScript` method name (#986) Mar 27, 2020
docker Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
docs Preparing for 0.26.0-SNAPSHOT development Mar 18, 2020
gradle/wrapper Update gradlew to 6.2.2 (#966) Mar 14, 2020
scripts Enforce JDK8 when running `publish-docs.sh` (#973) Mar 20, 2020
servicetalk-annotations Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-benchmarks Use `PooledByteBufAllocator` for netty internally (#942) Feb 22, 2020
servicetalk-bom Support `router-api` annotations for gRPC services (#912) Jan 17, 2020
servicetalk-buffer-api Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-buffer-netty Use `PooledByteBufAllocator` for netty internally (#942) Feb 22, 2020
servicetalk-client-api-internal Introduce automatic retries (#861) Nov 13, 2019
servicetalk-client-api Preparing for 0.26.0-SNAPSHOT development Mar 18, 2020
servicetalk-concurrent-api-internal Move PlatformDependent to `servicetalk-utils-internal` #879 (#882) Dec 2, 2019
servicetalk-concurrent-api Update versions of quality tools (#987) Mar 27, 2020
servicetalk-concurrent-internal Move PlatformDependent to `servicetalk-utils-internal` #879 (#882) Dec 2, 2019
servicetalk-concurrent-jdkflow Spotbugs exclusion for JDK flow (#917) Jan 10, 2020
servicetalk-concurrent-reactivestreams Publisher#range operator (#961) Mar 11, 2020
servicetalk-concurrent Update dependencies to the latest versions (#922) Jan 17, 2020
servicetalk-data-jackson-jersey Initial support for windows development (#977) Mar 24, 2020
servicetalk-data-jackson Move PlatformDependent to `servicetalk-utils-internal` #879 (#882) Dec 2, 2019
servicetalk-data-protobuf Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-dns-discovery-netty Add a separate page for `ServiceDiscoverer` in docs (#963) Mar 13, 2020
servicetalk-examples Follow-up enhancements for `servicetalk-grpc-gradle-plugin` (#985) Mar 27, 2020
servicetalk-gradle-plugin-internal Fix typo in `inheritRepositoriesFromBuildScript` method name (#986) Mar 27, 2020
servicetalk-grpc-api Preparing for 0.26.0-SNAPSHOT development Mar 18, 2020
servicetalk-grpc-gradle-plugin Follow-up enhancements for `servicetalk-grpc-gradle-plugin` (#985) Mar 27, 2020
servicetalk-grpc-netty Follow-up enhancements for `servicetalk-grpc-gradle-plugin` (#985) Mar 27, 2020
servicetalk-grpc-protobuf Optimize `ProtoBufSerializationProvider` by minimizing copying (#943) Feb 21, 2020
servicetalk-grpc-protoc
servicetalk-http-api Add support for SameSite attribute in Cookies (#989) Mar 31, 2020
servicetalk-http-netty Initial support for windows development (#977) Mar 24, 2020
servicetalk-http-router-jersey-internal Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-http-router-jersey Initial support for windows development (#977) Mar 24, 2020
servicetalk-http-router-predicate Make `DefaultThreadFactory` name prefix consistent with `IoThreadFact… Jan 17, 2020
servicetalk-http-security-jersey Update versions of quality tools (#987) Mar 27, 2020
servicetalk-http-utils Initial support for windows development (#977) Mar 24, 2020
servicetalk-loadbalancer Preparing for 0.26.0-SNAPSHOT development Mar 18, 2020
servicetalk-log4j2-mdc-utils Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-log4j2-mdc Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-oio-api Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-opentracing-asynccontext Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-opentracing-http Align names of utility classes FooUtil vs FooUtils (#872) Nov 28, 2019
servicetalk-opentracing-inmemory-api Align names of utility classes FooUtil vs FooUtils (#872) Nov 28, 2019
servicetalk-opentracing-inmemory Align names of utility classes FooUtil vs FooUtils (#872) Nov 28, 2019
servicetalk-opentracing-internal Align names of utility classes FooUtil vs FooUtils (#872) Nov 28, 2019
servicetalk-opentracing-log4j2 Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-opentracing-zipkin-publisher Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-router-api Support `router-api` annotations for gRPC services (#912) Jan 17, 2020
servicetalk-router-utils-internal Support `router-api` annotations for gRPC services (#912) Jan 17, 2020
servicetalk-serialization-api Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-tcp-netty-internal Ensure `TcpConnector#connect` does not emit error after success (#967) Mar 17, 2020
servicetalk-test-resources Initial support for windows development (#977) Mar 24, 2020
servicetalk-transport-api Expose protocol name at `ConnectionContext` API (#955) Mar 7, 2020
servicetalk-transport-netty-internal NettyChannelPublisher cancel active subscriber should terminate (#976) Mar 26, 2020
servicetalk-transport-netty Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
servicetalk-utils-internal Initial support for windows development (#977) Mar 24, 2020
.git.commit.template Adding contributing guide and contributors list. (#570) May 22, 2019
.gitignore Update to Gradle 5 and drastically simplify build (#756) Sep 3, 2019
CODE_OF_CONDUCT.adoc Sync files in the root folder with docs pages (#808) Oct 14, 2019
CONTRIBUTING.adoc Make "project communication" guideline more discoverable (#864) Nov 13, 2019
LICENSE.txt Add LICENSE.txt Aug 7, 2018
README.adoc Fix link for Maven Central (#965) Mar 11, 2020
build.gradle Enable publish to maven central via Sonatype with plugin scoping (#849) Nov 7, 2019
gradle.properties Update versions of quality tools (#987) Mar 27, 2020
gradlew Update gradlew to 6.2.2 (#966) Mar 14, 2020
gradlew.bat Initial support for windows development (#977) Mar 24, 2020
settings.gradle Support `router-api` annotations for gRPC services (#912) Jan 17, 2020

README.adoc

ServiceTalk

Maven Central

ServiceTalk is a JVM network application framework with APIs tailored to specific protocols (e.g. HTTP/1.x, HTTP/2.x, etc…​) and supports multiple programming paradigms.

It is built on Netty and is designed to provide most of the performance/scalability benefits of Netty for common networking protocols used in service to service communication. ServiceTalk provides server support and "smart client" like features such as client-side load balancing and service discovery integration.

See the ServiceTalk docs for more information.

Getting Started

ServiceTalk releases are available on Maven Central.

For Gradle as well as other build tools that don’t use Maven Central as a default repository, additional configuration is required.

Gradle, build.gradle
repositories {
  jcenter() // combines Maven Central and other popular repositories
}

Refer to the ServiceTalk docs for various examples that will get you started with the different features of ServiceTalk.

Note
Builds of the development version are available in Sonatype’s snapshots Maven repository.

Supported JVM

The minimum supported JDK version is 1.8.

Compatibility

ServiceTalk follows SemVer 2.0.0. API/ABI breaking changes will require package renaming for that module to avoid runtime classpath conflicts.

Note
0.x.y releases are not stable and are permitted to break API/ABI.

Contributor Setup

Important
If you’re intending to contribute to ServiceTalk, make sure to first read the contribution guidelines.

ServiceTalk uses Gradle as its build tool and only requires JDK 8 or higher to be pre-installed. ServiceTalk ships with the Gradle Wrapper, which means that there is no need to install Gradle on your machine beforehand.

File Encoding

ServiceTalk’s source code is UTF-8 encoded: make sure your filesystem supports it before attempting to build the project. Setting the JAVA_TOOL_OPTIONS env var to -Dfile.encoding=UTF-8 should help building the project in non-UTF-8 environments. Editors and IDEs must also support UTF-8 in order to successfully edit ServiceTalk’s source code.

Gradle Repositories

ServiceTalk’s build produces custom Gradle plugins and thus has regular (i.e. non-buildscript) dependencies on other plugins. This is the reason why the repositories that are provided if none are configured globally are the following:

allprojects {
  buildscript {
    repositories {
      jcenter()
      maven { url "https://plugins.gradle.org/m2/" }
    }
  }
  repositories {
    jcenter()
    maven { url "https://plugins.gradle.org/m2/" }
  }
}

If you have defined repositories or repository mirrors in your global Gradle config (~/.gradle/init.gradle), the build will detect them and attempt to inherit buildscript repositories into the main repositories of the sub-projects that produce custom Gradle plugins.

Note
This inheritance mechanism can be disabled by setting a Gradle property:
-PdisableInheritBuildscriptRepositories.

Build Commands

You should be able to run the following command to build ServiceTalk and verify that all tests and code quality checks pass:

$ ./gradlew build

The supported IDE is IntelliJ IDEA. In order to generate IntelliJ IDEA project files for ServiceTalk, you can run the following command:

$ ./gradlew idea

When done, running one of following commands would open ServiceTalk in IntelliJ:

Generic
$ idea .
macOS
$ open servicetalk.ipr

Project Communication

We encourage your participation asking questions and helping improve the ServiceTalk project. Github issues and pull requests are the primary mechanisms of participation and communication for ServiceTalk.

You can’t perform that action at this time.