This is the first article to start studying NATS, so let’s try simple sending and receiving messages first.
NATS Server
Publish Subscribe model
Use docker-compose.yml to build a test NATS Server.
1 2 3 4 5 6 7 8
| version: "3.8"
services: nats: container_name: nats image: nats:2.8.4 ports: - 4222:4222
|
then start
Java dependency
You need to import NATS Java library in build.gradle
1 2
| implementation 'io.nats:jnats:2.15.3'
|
Java code
You can refer to the SDK nats.java instructions here.
Producer
1 2 3 4 5 6 7 8 9 10
| import io.nats.client.Connection; import io.nats.client.Nats;
private void sendMessage() throws Exception { Connection nc = Nats.connect("nats://localhost:4222"); IntStream.range(0, 10) .forEach(i -> nc.publish("subject", ("hello world-" + i).getBytes(StandardCharsets.UTF_8))); nc.flush(Duration.ZERO); nc.close(); }
|
Consumer
1 2 3 4 5 6 7 8 9 10 11 12
| import io.nats.client.Connection; import io.nats.client.Dispatcher; import io.nats.client.Nats;
private void receiveMessage() throws Exception { Connection nc = Nats.connect("nats://localhost:4222"); Dispatcher d = nc.createDispatcher((msg) -> { String response = new String(msg.getData(), StandardCharsets.UTF_8); log.info("Received {}", response); }); d.subscribe("subject"); }
|
Simple to understand example of sending and receiving.
Reference
NATS Streams and Services: From Zero to Hero