Subscription

In HStramDB, subscription is also seen as a persistent resource which enabling decoupling between the consumer and the stream. User can create、delete and list subscriptions.

Concepts

HStreamDB uses subscription to manage the progress information of consumption (e.g. checkpoint, offset). For consumer to consume the data, it must join a subscription that already exists.

Prerequisites

Make sure you have HStreamDB running and accessible.

Create a New Subscription

You can create a new subscription using the HStreamClient.createSubscription(Subscription) method:

  1. Subscription subscription =
  2. Subscription
  3. .newBuilder()
  4. .subscription("my_subscription")
  5. .stream("my_stream")
  6. .offset(new SubscriptionOffset(SubscriptionOffset.SpecialOffset.LATEST))
  7. .ackTimeoutSeconds(600)
  8. .build();
  9. client.createSubscription(subscription);

the SubscriptionOffset can have three types of values:

  1. // consume from the start of the stream
  2. SubscriptionOffset.SpecialOffset offset = SubscriptionOffset.SpecialOffset.EARLIST;
  3. // consume from the tail of the stream
  4. SubscriptionOffset.SpecialOffset offset = SubscriptionOffset.SpecialOffset.LATEST;
  5. // consume from RecordId with specified LSN and offset
  6. RecordId rid = new RecordId(1, 2);

Get a List of Subscriptions

You can get a list of the subscriptions using the HStreamClient.listSubscriptions() method:

  1. List<Subscription> subscriptions = client.listSubscriptions();
  2. for (Subscription subscription : subscriptions) {
  3. System.out.println(subscription);
  4. System.out.println(subscription.getSubscriptionId());
  5. }

Delete a Subscription

You can delete a subscription using the HStreamClient.deleteSubscription() method:

  1. client.deleteSubscription("test_subscription");