Subscription subscribe(String applicationName, Set<String> eventNames, String consumerGroup, SubscriptionRequest.Position readFrom, @Nullable List<Cursor> initialCursors) throws IOException {
checkArgument(readFrom != SubscriptionRequest.Position.CURSORS || (initialCursors != null && !initialCursors.isEmpty()), "Initial cursors are required for position: cursors");
final SubscriptionRequest subscription = new SubscriptionRequest(applicationName, eventNames, consumerGroup, readFrom, initialCursors);
final URI uri = baseUri.resolve("/subscriptions");
final Request request = clientHttpRequestFactory.createRequest(uri, "POST");
request.getHeaders().setContentType(ContentType.APPLICATION_JSON);
try (final OutputStream os = request.getBody()) {
internalObjectMapper.writeValue(os, subscription);
}
try (final Response response = request.execute()) {
try (final InputStream is = response.getBody()) {
final Subscription subscriptionResponse = internalObjectMapper.readValue(is, Subscription.class);
LOG.info("Created subscription for event {} with id [{}]", subscription.getEventTypes(), subscriptionResponse.getId());
cursorManager.addSubscription(subscriptionResponse);
return subscriptionResponse;
}
}
}