Java Examples
  • This client wraps the Rust code.
  • The calls to using Fluvio objects across the network are all blocking.

To see the full docs, visit our javadoc page.

 

Example Workflow

Follow the installation instructions to run this example.

plugins {
   // Apply the application plugin to add support for building a CLI application in Java.
   id 'application'
}

repositories {
   // Use Maven Central for resolving dependencies.
   mavenCentral()
}

dependencies {
    // Fluvio Java client
    implementation 'com.infinyon:fluvio:0.12.15'
}

application {
   // Define the main class for the application.
   mainClass = 'fluvio.App'
}
package fluvio;

import com.infinyon.fluvio.Fluvio;
import com.infinyon.fluvio.TopicProducer;
import com.infinyon.fluvio.PartitionConsumer;
import com.infinyon.fluvio.PartitionConsumerStream;
import com.infinyon.fluvio.Offset;
import com.infinyon.fluvio.Record;
import java.text.MessageFormat;
import java.util.*;

/**
* This is an example of a basic Fluvio workflow in Java 
*
* 1. Create a topic to store data in via CLI
* 2. Establish a connection to the Fluvio cluster
* 3. Create a producer and send some bytes
* 4. Create a consumer, and stream the data back
*/
public class App {
   public static final String TOPIC_NAME = "hello-java";
   public static final int PARTITION = 0;
   public static final int NUM_MESSAGES = 1;

   public static void main(String[] args) throws Exception {
       // Currently the Java client does not support creating topics
       // Using the fluvio CLI
       final String cmd = String.format("fluvio topic create %s", TOPIC_NAME);
       try {
           Process process = Runtime.getRuntime().exec(cmd);
       } catch (Exception e) {
           e.printStackTrace(System.err);
       }

       // Connect to cluster
       Fluvio fluvio = Fluvio.connect();

       // Produce to topic
       TopicProducer producer = fluvio.producer(TOPIC_NAME);

       for (int i = 0; i < NUM_MESSAGES; i++) {
           producer.send(String.valueOf(i).getBytes(), MessageFormat.format("Hello World! - Time is {0,time}", new Date()).getBytes());
       }

       // Consume from topic
       PartitionConsumer consumer = fluvio.consumer(TOPIC_NAME, PARTITION);
       PartitionConsumerStream stream = consumer.stream(Offset.from_end(NUM_MESSAGES - 1));
       for (int i = 0; i < NUM_MESSAGES; i++) {
           Record record = stream.next();
           System.out.printf("Consumed record, key=%s, value=%s\n", record.key_string(), record.value_string());
       }
   }
}
 

Run

$ gradle run
 

Links to Docs: