Orbit.java is a set of independent utilities or extensions around the JNATS ecosystem that aims to boost productivity and provide a higher abstraction layer for the JNATS client. Note that these libraries will evolve rapidly and API guarantees are general not made until the specific project has a v1.0.0 version.
| Project | Description | Release Version | Snapshot |
|---|---|---|---|
| Retrier | Extension for retrying anything | 0.2.1 | 0.2.2-SNAPSHOT |
| Jetstream Publish Extensions | General extensions for Jetstream Publishing | 0.4.4 | 0.4.5-SNAPSHOT |
| Request Many | Get many responses for a single core request. | 0.1.1 | 0.1.2-SNAPSHOT |
| Encoded KeyValue | Allow custom encoding of keys and values. | 0.1.1 | 0.1.2-SNAPSHOT |
| Direct Batch | Leverages direct message capabilities in NATS Server | 0.0.4 | 0.0.5-SNAPSHOT |
| Batch Publish | Publish an atomic batch | 0.2.2 | 0.2.3-SNAPSHOT |
| Distributed Counters | Leverage distributed counters functionality | 0.2.2 | 0.2.3-SNAPSHOT |
| Scheduled Message | Leverage ability to schedule a message | 0.0.3 | 0.0.4-SNAPSHOT |
| Chaos Runner | Run some NATS servers and cause chaos | 0.0.8 | 0.0.9-SNAPSHOT |
| Partitioned Consumer Groups | Partitioned Consumer Group funcitionality for JetStream | 0.1.1 | 0.1.1-SNAPSHOT |
| Partitioned Consumer Groups CLI | Partitioned Consumer Group CLI | 0.1.0 | N/A |
Extension for retrying anything.
General extensions for Jetstream Publishing
Jetstream Publish Extensions README
Extension to get many responses for a single core request.
Extension over Key Value to allow custom encoding of keys and values.
The direct batch functionality leverages the direct message capabilities introduced in NATS Server v2.11. The functionality is described in ADR-31
Utility to publish an atomic batch, a group of up to 1000 messages
Utility to take leverage the distributed counter functionality.
Utility to leverage the ability to schedule a message to be published at a later time. Eventually the ability to schedule a message to publish based on a cron or schedule.
Run some NATS servers and cause chaos by bringing them up and down.
Implementation of the partitioned Consumer Group functionality, ported from and compatible with the Golang version.
Partitioned Consumer Groups README
The libraries are available in the Maven central repository, and can be imported as a standard dependency in your build.gradle file:
dependencies {
implementation 'io.synadia:{artifact}:{major.minor.patch}'
}Releases are available at Maven Central:
repositories {
mavenCentral()
}If you need a snapshot version, you must add the url for the snapshots.
repositories {
mavenCentral()
maven {
url "https://central.sonatype.com/repository/maven-snapshots/"
}
}
dependencies {
implementation 'io.synadia:{artifact}:{major.minor.patch}-SNAPSHOT'
}The libraries are available on the Maven central repository, and can be imported as a normal dependency in your pom.xml file:
<dependency>
<groupId>io.synadia</groupId>
<artifactId>{artifact}</artifactId>
<version>{major.minor.patch}</version>
</dependency>Releases are available at Maven Central. If you need a snapshot version, you must enable snapshots and change your dependency.
<repositories>
<repository>
<name>Central Portal Snapshots</name>
<id>central-portal-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependency>
<groupId>io.synadia</groupId>
<artifactId>{artifact}</artifactId>
<version>{major.minor.patch}-SNAPSHOT</version>
</dependency>If you are importing the source code from this repo, please be aware that each project is its own library. Some projects have classes with the same name, but each project is completely independent on another, except if one specifically depends on another. For example, the publish extensions depends on retrier, but it includes the library via gradle, not the source code.
