Skip to content

Commit da8f021

Browse files
authored
update examples (#38)
1 parent 8d506ef commit da8f021

File tree

6 files changed

+87
-44
lines changed

6 files changed

+87
-44
lines changed

examples/README.md

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,14 @@
22

33
## Prerequisites
44

5-
- hstreamdb server [v0.5.2.0](https://hub.docker.com/layers/hstreamdb/hstream/v0.5.2.0/images/sha256-d26234758cd47916d6a5d137a3690cdeeddaf7af041a8eea5e7c1d7ada43f3b8)
6-
- hstreamdb-java [v0.4.0](https://search.maven.org/artifact/io.hstream/hstreamdb-java/0.4.0/jar)
5+
- hstreamdb server [v0.6.0.0](https://hub.docker.com/layers/hstreamdb/hstream/v0.6.0/images/sha256-8502a7e4d609becc1d6f998f59f38a2785f878795a6ed8c81be8b38d0aed3109?context=explore)
6+
- hstreamdb-java [v0.6.0](https://search.maven.org/artifact/io.hstream/hstreamdb-java/0.6.0/jar)
77

88
## Examples
99

10-
- [ConsumerExample.java](app/src/main/java/io/hstream/example/ConsumerExample.java) - How to consume messages from a subscription
11-
- [StreamQueryExample.java](app/src/main/java/io/hstream/example/StreamQueryExample.java) - How to use SQL commands to query data from streams
10+
- [CreateStreamExample.java](src/main/java/io/hstream/example/CreateStreamExample.java) - How to create a stream
11+
- [CreateSubscriptionExample.java](src/main/java/io/hstream/example/CreateSubscriptionExample.java) - How to create a subscription
12+
- [ProducerExample.java](src/main/java/io/hstream/example/ProducerExample.java) - How to produce messages to a stream
13+
- [ConsumerExample.java](src/main/java/io/hstream/example/ConsumerExample.java) - How to consume messages from a subscription
14+
- [StreamQueryExample.java](src/main/java/io/hstream/example/StreamQueryExample.java) - How to use SQL commands to query data from streams
1215

13-
## Run
14-
15-
### Step 1: Start HStreamDB Server
16-
17-
```bash
18-
19-
./start-hstreamdb.sh
20-
21-
```
22-
23-
### Step 2: Run this Example
24-
25-
```bash
26-
27-
gradle run
28-
29-
```

examples/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ repositories {
1010
}
1111

1212
dependencies {
13-
implementation 'io.hstream:hstreamdb-java:0.4.0'
13+
implementation 'io.hstream:hstreamdb-java:0.6.0'
1414
}
1515

1616
application {

examples/src/main/java/io/hstream/example/ConsumerExample.java

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,23 @@
11
package io.hstream.example;
22

33
import io.hstream.*;
4-
import java.util.Random;
54

5+
/** This example shows how to consume data from specified subscription */
66
public class ConsumerExample {
77
private static final String SERVICE_URL = "localhost:6570";
8-
private static final String DEMO_STREAM = "demo_stream";
98
private static final String DEMO_SUBSCRIPTION = "demo_stream";
109

1110
public static void main(String[] args) {
1211
HStreamClient client = HStreamClient.builder().serviceUrl(SERVICE_URL).build();
1312

14-
client.createStream(DEMO_STREAM);
15-
16-
Subscription subscription =
17-
new Subscription(
18-
DEMO_SUBSCRIPTION,
19-
DEMO_STREAM,
20-
new SubscriptionOffset(SubscriptionOffset.SpecialOffset.LATEST));
21-
client.createSubscription(subscription);
22-
23-
Producer producer =
24-
client.newProducer().stream(DEMO_STREAM).enableBatch().recordCountLimit(1000).build();
25-
26-
Random random = new Random();
27-
byte[] rawRecord = new byte[100];
28-
for (int i = 0; i < 1000; ++i) {
29-
random.nextBytes(rawRecord);
30-
producer.writeAsync(rawRecord);
31-
}
32-
producer.flush();
33-
3413
Consumer consumer =
3514
client
3615
.newConsumer()
3716
.subscription(DEMO_SUBSCRIPTION)
3817
.rawRecordReceiver(
3918
(receivedRawRecord, responder) -> {
4019
System.out.println("get record: " + receivedRawRecord.getRecordId());
20+
responder.ack();
4121
})
4222
.build();
4323
consumer.startAsync().awaitRunning();
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.hstream.example;
2+
3+
import io.hstream.HStreamClient;
4+
5+
/** This example shows how to create a stream */
6+
public class CreateStreamExample {
7+
private static final String SERVICE_URL = "localhost:6570";
8+
private static final String DEMO_STREAM = "demo_stream";
9+
10+
public static void main(String[] args) {
11+
HStreamClient client = HStreamClient.builder().serviceUrl(SERVICE_URL).build();
12+
13+
client.createStream(DEMO_STREAM);
14+
}
15+
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package io.hstream.example;
2+
3+
import io.hstream.*;
4+
5+
/** This example shows how to create a subscription associated to the specified stream */
6+
public class CreateSubscriptionExample {
7+
private static final String SERVICE_URL = "localhost:6570";
8+
private static final String DEMO_STREAM = "demo_stream";
9+
private static final String DEMO_SUBSCRIPTION = "demo_subscription";
10+
11+
public static void main(String[] args) {
12+
HStreamClient client = HStreamClient.builder().serviceUrl(SERVICE_URL).build();
13+
// create a subscription which consume data from the tail of the stream.
14+
Subscription subscriptionFromEarlist =
15+
Subscription.newBuilder().subscription(DEMO_SUBSCRIPTION).stream(DEMO_STREAM)
16+
.offset(new SubscriptionOffset(SubscriptionOffset.SpecialOffset.EARLIEST))
17+
.ackTimeoutSeconds(600)
18+
.build();
19+
client.createSubscription(subscriptionFromEarlist);
20+
21+
// create a subscription which consume data from the tail of the stream.
22+
Subscription subscriptionFromLatest =
23+
Subscription.newBuilder().subscription(DEMO_SUBSCRIPTION).stream(DEMO_STREAM)
24+
.offset(new SubscriptionOffset(SubscriptionOffset.SpecialOffset.LATEST))
25+
.ackTimeoutSeconds(600)
26+
.build();
27+
client.createSubscription(subscriptionFromLatest);
28+
29+
// create a subscription which consume data from specified RecordId.
30+
Subscription subscription =
31+
Subscription.newBuilder().subscription(DEMO_SUBSCRIPTION).stream(DEMO_STREAM)
32+
.offset(new SubscriptionOffset(new RecordId(1, 2)))
33+
.ackTimeoutSeconds(600)
34+
.build();
35+
client.createSubscription(subscription);
36+
}
37+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.hstream.example;
2+
3+
import io.hstream.*;
4+
import java.util.Random;
5+
import java.util.concurrent.CompletableFuture;
6+
7+
/** This example shows how to write data to an existed stream */
8+
public class ProducerExample {
9+
private static final String SERVICE_URL = "localhost:6570";
10+
private static final String DEMO_STREAM = "demo_stream";
11+
12+
public static void main(String[] args) {
13+
HStreamClient client = HStreamClient.builder().serviceUrl(SERVICE_URL).build();
14+
15+
Producer producer =
16+
client.newProducer().stream(DEMO_STREAM).enableBatch().recordCountLimit(1000).build();
17+
18+
Random random = new Random();
19+
byte[] rawRecord = new byte[100];
20+
for (int i = 0; i < 1000; ++i) {
21+
random.nextBytes(rawRecord);
22+
CompletableFuture<RecordId> future = producer.write(rawRecord);
23+
}
24+
}
25+
}

0 commit comments

Comments
 (0)