initial commit

This commit is contained in:
gwg313 2026-01-15 12:21:18 -05:00
commit 976b4f88cc
Signed by: gwg313
GPG key ID: 60FF63B4826B7400
11 changed files with 249 additions and 0 deletions

View file

@ -0,0 +1,17 @@
version: "3.8"
services:
nats:
image: nats:2.10
ports:
- "4222:4222"
subscriber:
build: ./subscriber
depends_on:
- nats
publisher:
build: ./publisher
depends_on:
- nats

View file

@ -0,0 +1,11 @@
FROM eclipse-temurin:21-jdk
WORKDIR /app
ADD https://repo1.maven.org/maven2/io/nats/jnats/2.16.14/jnats-2.16.14.jar nats.jar
COPY Publisher.java .
RUN javac -cp nats.jar Publisher.java
CMD ["java", "-cp", ".:nats.jar", "Publisher"]

View file

@ -0,0 +1,22 @@
import io.nats.client.Connection;
import io.nats.client.Nats;
import java.time.Duration;
public class Publisher {
public static void main(String[] args) throws Exception {
Connection nc = Nats.connect("nats://nats:4222");
int counter = 0;
while (true) {
long sendTime = System.currentTimeMillis();
String msg = counter + "," + sendTime;
nc.publish("demo.subject", msg.getBytes());
nc.flush(Duration.ofSeconds(1));
System.out.println("Sent: " + counter);
counter++;
Thread.sleep(1000);
}
}
}

View file

@ -0,0 +1,11 @@
FROM eclipse-temurin:21-jdk
WORKDIR /app
ADD https://repo1.maven.org/maven2/io/nats/jnats/2.16.14/jnats-2.16.14.jar nats.jar
COPY Subscriber.java .
RUN javac -cp nats.jar Subscriber.java
CMD ["java", "-cp", ".:nats.jar", "Subscriber"]

View file

@ -0,0 +1,25 @@
import io.nats.client.Connection;
import io.nats.client.Dispatcher;
import io.nats.client.Nats;
public class Subscriber {
public static void main(String[] args) throws Exception {
Connection nc = Nats.connect("nats://nats:4222");
Dispatcher dispatcher = nc.createDispatcher(msg -> {
String received = new String(msg.getData()).trim();
String[] parts = received.split(",");
if (parts.length >= 2) {
int counter = Integer.parseInt(parts[0].trim());
long sendTime = Long.parseLong(parts[1].trim());
long latency = System.currentTimeMillis() - sendTime;
System.out.printf("Received: %d | Latency: %d ms%n", counter, latency);
}
});
dispatcher.subscribe("demo.subject");
Thread.sleep(Long.MAX_VALUE);
}
}