### Interact with NATS Key/Value Store using Java Source: https://docs.quarkiverse.io/quarkus-reactive-messaging-nats-jetstream/dev/index.html A Java resource class demonstrating how to use the NATS Key/Value store client for getting, putting, and deleting data. ```java @Path("/key-value") @Produces("application/json") @RequestScoped class KeyValueStoreResource { private final Client client; @Inject public KeyValueStoreResource(Client client) { this.client = client; } @GET @Path("{key}") public Uni getValue(@PathParam("key") String key) { return client.getValue("test", key, Data.class); } @PUT @Path("{key}") @Consumes("application/json") public Uni putValue(@PathParam("key") String key, Data data) { return client.putValue("test", key, data); } @DELETE @Path("{key}") @Consumes("application/json") public Uni deleteValue(@PathParam("key") String key) { return client.deleteValue("test", key); } } ``` -------------------------------- ### Configure NATS Key/Value Store Source: https://docs.quarkiverse.io/quarkus-reactive-messaging-nats-jetstream/dev/index.html Configure the NATS connection and a Key/Value store named 'test' with in-memory storage. ```properties quarkus.messaging.nats.connection.servers=nats://localhost:4242 quarkus.messaging.nats.connection.username=guest quarkus.messaging.nats.connection.password=guest quarkus.messaging.nats.connection.ssl-enabled=false # Creates a "test" bucket stored in memory. This part is optional. If you already have created a bucket on NATS # then this configuration is redundant. quarkus.messaging.nats.key-value-stores.test.storage-type=Memory quarkus.messaging.nats.key-value-stores.test.description=Test bucket ``` -------------------------------- ### Add Maven Dependency Source: https://docs.quarkiverse.io/quarkus-reactive-messaging-nats-jetstream/dev/index.html Add the io.quarkiverse.reactivemessaging.nats-jetstream:quarkus-reactive-messaging-nats-jetstream extension to your Maven POM file. ```xml io.quarkiverse.reactivemessaging.nats-jetstream quarkus-messaging-nats-jetstream 3.35.0 ``` -------------------------------- ### Consume Messages with Java Source: https://docs.quarkiverse.io/quarkus-reactive-messaging-nats-jetstream/dev/index.html Implement a Java consumer to process incoming messages of type Data on the 'data' channel. ```java package inbound; import org.eclipse.microprofile.reactive.messaging.Incoming; import jakarta.enterprise.context.ApplicationScoped; @ApplicationScoped public class DataConsumer { @Incoming("data") public void consume(Data data) { // process your data. } } ``` -------------------------------- ### Configure NATS JetStream Connector Source: https://docs.quarkiverse.io/quarkus-reactive-messaging-nats-jetstream/dev/index.html Configure your application to use the quarkus-jetstream connector for incoming and outgoing message channels. ```properties # Inbound mp.messaging.incoming.[channel-name].connector=quarkus-jetstream # Outbound mp.messaging.outgoing.[channel-name].connector=quarkus-jetstream ``` -------------------------------- ### Configure NATS Connection and Streams for Receiving Messages Source: https://docs.quarkiverse.io/quarkus-reactive-messaging-nats-jetstream/dev/index.html Configure the NATS connection details and stream/consumer settings to receive messages on the 'data' channel from the 'test' stream and 'data' subject. ```properties quarkus.messaging.nats.connection.servers=nats://localhost:4242 quarkus.messaging.nats.connection.username=guest quarkus.messaging.nats.connection.password=guest quarkus.messaging.nats.connection.ssl-enabled=false # Streams and consumers are created based on the stream configuration quarkus.messaging.nats.streams.test.pull-consumers.data-consumer.consumer-configuration.filter-subjects=data mp.messaging.incoming.data.connector=quarkus-jetstream mp.messaging.incoming.data.stream=test mp.messaging.incoming.data.consumer=data-consumer ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.