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.
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.16'
}
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());
}
}
}
$ gradle run